代码之家  ›  专栏  ›  技术社区  ›  flipdoubt

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

  •  3
  • flipdoubt  · 技术社区  · 15 年前

    我的WinForms应用程序使用 Process.Start() 在本机应用程序中打开文件。我想把屏幕分成两半,一半显示我的WinForms应用程序,另一半显示新进程。我知道我可以用 Process.MainWindowHandle 但是我怎样才能设置它的大小和位置呢?

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

    1 回复  |  直到 15 年前
        1
  •  6
  •   Tergiver    15 年前

    有问题的windowsapi方法是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参数。 您可以使用屏幕类型访问有关桌面的信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.aspx

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

    上述SetWindowPos声明适用于32位和64位窗口。