如何在Windows上更改活动窗口?

时间:2012-02-17 17:06:07

标签: .net windows

我需要能够根据来自COM端口的输入在两个第三方应用程序之间切换,即当我从设备接收Command1时,使App1成为活动(最顶层)窗口,当我从设备接收Command2,使App2成为活动窗口。我为什么要这样做?该应用程序将在自助服务站上运行,我将监视运动传感器的输入;因此,当没有人在车站前时,我需要显示App2(例如广告),当有人站在前面时,我需要显示App1(例如主应用程序)。

我在考虑一个在后台运行的应用程序,并监听COM端口上的输入并相应地切换活动窗口。所以问题是,如何使用.NET更改活动窗口?操作系统将是Windows XP专业版SP2,但如果它也能在Windows 7上运行则会更好。

1 个答案:

答案 0 :(得分:2)

你可以使用;

[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);

然后按名称或循环GetProcesses找到相关流程,例如假设一个实例:

Process[] process = Process.GetProcessesByName("myapp");
if (process.Length > 0 && process[0].MainWindowHandle != IntPtr.Zero) {
   SetForegroundWindow(process[0].MainWindowHandle);
}