我有一个调用外部应用程序的程序。该应用程序设计为使用2个监视器运行。监视器1上的第一个程序,监视器2上的第二个程序。
现在我遇到的问题是extern应用程序没有参数我可以让他们在第二台显示器上强制提升。
是否有可能迫使另一个申请机会获得他的职位。同样好的是可以强制改变他的窗口状态(总是以最大化开始)。
答案 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);
以上示例使用记事本,您将在此处选择您的应用