在Windows中设置应用程序的位置

时间:2014-06-23 08:59:22

标签: c# wpf windows

我有一个调用外部应用程序的程序。该应用程序设计为使用2个监视器运行。监视器1上的第一个程序,监视器2上的第二个程序。

现在我遇到的问题是extern应用程序没有参数我可以让他们在第二台显示器上强制提升。

是否有可能迫使另一个申请机会获得他的职位。同样好的是可以强制改变他的窗口状态(总是以最大化开始)。

2 个答案:

答案 0 :(得分:1)

请参阅MSDN的此说明。

http://msdn.microsoft.com/en-us/library/windows/desktop/dd162827(v=vs.85).aspx

您需要的WinAPI函数是

FindWindow - 找到窗口句柄(HWND

SetWindowPos - 设置窗口位置

ShowWindow - 更改窗口状态

EnumDisplayMonitors - 获取监控信息

请参阅pinvoke.net如何在C#中导入这些函数

答案 1 :(得分:0)

API可以帮助您实现相同的

首先声明

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

    const int SW_SHOWMAXIMIZED = 3;
    const int SWP_FRAMECHANGED = 0x0020;

以上使用只需调用目标应用并将其发送到您想要的位置并最大化

    Process p = Process.Start(new ProcessStartInfo("notepad"));
    Thread.Sleep(1000); //depends
    IntPtr handle = p.MainWindowHandle;
    SetWindowPos(handle, IntPtr.Zero, 200, 200, 500, 600, SWP_FRAMECHANGED);
    ShowWindowAsync(handle, SW_SHOWMAXIMIZED);

以上示例使用记事本,您将在此处选择您的应用