更改现有窗口大小&的位置

本文关键字:位置 窗口大小 | 更新日期: 2023-09-27 18:18:15

我目前正在编写一个c#程序来管理一些配置文件。我觉得我需要做的一件事是修改an的大小和/或位置打开窗口。窗口已经有全屏功能,但没有最大化功能。

我想做的是挂钩到那个窗口(无论情况如何,它总是运行java进程,并有2个名字之一),并改变它的大小到屏幕的大小,并从它删除边界。

我已经广泛地搜索过了,到目前为止我找到的最好的答案是我如何改变另一个程序的窗口大小?但这并不影响程序的边界,而且我似乎无法在c#中正确地使用WindowFromPoint的任何变体,这是我从未遇到过的。


正如我所说,到目前为止,程序总是在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) Reference (Pinvoke.net)

也许在页面顶部的alternative文本会更简单:

如果您需要查找给定进程ID的窗口,请尝试结合使用枚举窗口GetWindowThreadProcessId .

要实现上述内容,请尝试使用Process。GetProcessesByName方法

一旦你能够获得一个窗口的引用,这个链接可以帮助你删除它的边框