簡體   English   中英

更改現有窗口的大小和位置

[英]Change Existing Window Size & Position

我目前正在使用C#程序來管理一些配置文件。 我覺得我需要做的一件事是修改打開的窗口的大小和/或位置。 該窗口已經具有全屏功能,但沒有最大化功能。

我想做的是鈎到該窗口(無論在什么情況下,該窗口始終在java進程上運行,並且具有2個名稱之一),並將其大小更改為屏幕大小,並從中刪除邊框。

我已經進行了廣泛的搜索,到目前為止找到的最佳答案是如何更改另一個程序的窗口大小? 但這不會影響程序的邊界,而且我似乎無法獲得WindowFromPoint的任何變體以在C#中正常工作,這是我從未遇到過的事情。


到目前為止,我已經說過該程序始終在java內部運行,因此“ javaw”進程仍在運行,但它具有自己的jar,盡管它始終具有相同的窗口標題。

我正在使用:

[DllImport("User32.Dll")]
public static extern int FindWindow(string lpClassName, string lpWindowName);
[DllImport("User32.Dll")]
public static extern int GetClassName(int hwnd, StringBuilder lpClassName, int nMaxCount);

int nWinHandle = FindWindow("Name", null);

但是,無論使用class和windowname進行何種組合,無論是否使用擴展名,我都始終返回0。沒有該擴展名,我覺得我可以使用任何其他代碼。

對於那些不想閱讀全部內容的人……我正在尋找一種鈎接到現有窗口的方法,刪除其邊框並將其大小設置為用戶的主屏幕尺寸。

編輯:因此,通過引用FindWindowByCaption(IntPtr ZeroOnly,字符串lpWindowName),我可以將窗口名稱轉換為IntPtr,然后使用MoveWindow();。 盡管我仍然無法消除它的邊界。

FindWindow(user32)參考(Pinvoke.net)

頁面頂部的alternative文本可能會更簡單:

如果需要查找給定進程ID的窗口,請嘗試將EnumWindowsGetWindowThreadProcessId結合使用。

要實現上述目的,請嘗試使用Process.GetProcessesByName方法

一旦能夠獲得對Window的引用, 此鏈接就可以幫助您刪除它的borders

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM