繁体   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