更改现有窗口大小&位置

时间:2014-08-14 19:02:22

标签: java c# winforms winapi

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

我要做的是挂钩到那个窗口(它总是在java进程中运行,并且无论情况如何都有2个名称之一)并将其大小更改为屏幕大小并从中删除边框它

我进行了广泛的搜索,到目前为止我找到的最佳答案是How do I change another program's window's size? 但是这不会影响程序的边界,我似乎无法使用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);

但无论班级与windowname的组合如何,与&没有扩展我使用我总是返回0.没有它我觉得我可以使用任何其他代码。

对于那些不想读整篇文章的人...... 我正在寻找一种方法来挂钩现有的窗口,删除它的边框并将其大小设置为用户的主屏幕尺寸。

编辑:因此,通过引用FindWindowByCaption(IntPtr ZeroOnly,string lpWindowName),我可以将窗口名称输入IntPtr,然后使用MoveWindow(); 虽然我仍然无法剥离它的边界。

1 个答案:

答案 0 :(得分:0)

FindWindow (user32) Reference (Pinvoke.net)

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

  

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

要实现上述功能,请尝试使用Process.GetProcessesByName Method

一旦您能够获得对窗口的引用,this link may help you remove its borders