gpt4 book ai didi

c# - 如何从 WinForms 应用程序控制新进程窗口的大小和位置?

转载 作者:可可西里 更新时间:2023-11-01 09:18:18 26 4
gpt4 key购买 nike

我的 WinForms 应用程序使用 Process.Start() 在其 native 应用程序中打开文件。我想将屏幕分成两半,在一半上显示我的 WinForms 应用程序,在另一半上显示新进程。我知道我可以使用 Process.MainWindowHandle 获取窗口句柄,但我如何设置它的大小和位置?

我想我必须使用某种 Windows API,但使用哪一种以及如何使用?由于这并不是真正“在我的驾驶室”,我不确定我是否(以及如何)需要在 64 位 Windows 上使用不同的 API。

最佳答案

有问题的 Windows API 方法是 SetWindowPos。您可以这样声明:

[DllImport("user32.dll")]
private extern static bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);

并在这里阅读: http://msdn.microsoft.com/en-us/library/ms633545.aspx

已添加

Process.MainWindowHandle 是您将使用的 hWnd 参数。hWndInsertAfter 可能是您自己的窗体句柄 (Form.Handle)。您可以使用屏幕类型来访问有关桌面的信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

添加了 Thomas 的评论

确保在调用 SetWindowPos 之前 WaitForInputIdle。

Process process = Process.Start(...);
if (process.WaitForInputIdle(15000))
SetWindowPos(process.MainWindowHandle, this.Handle, ...);

上面的 SetWindowPos 声明适用于 32 位和 64 位 Windows。

关于c# - 如何从 WinForms 应用程序控制新进程窗口的大小和位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3321535/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com