[英]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的窗口,请尝试将EnumWindows与GetWindowThreadProcessId结合使用。
要实现上述目的,请尝试使用Process.GetProcessesByName方法
一旦能够获得对Window的引用, 此链接就可以帮助您删除它的borders 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.