代码参考: C#代码 程序只能运行一次!
防止程序运行多个实例的方法有多种,如:通过使用互斥量和进程名等.而我想要实现的是:在程序运行多个实例时激活的是第一个实例,使其获得焦点,并在前端显示.
主要用到两个API 函数:
- ShowWindowAsync 该函数设置由不同线程产生的窗口的显示状态。
- SetForegroundWindow 该函数将创建指定窗口的线程设置到前台,并且激活该窗口。键盘输入转向该窗口,并为用户改各种可视的记号。系统给创建前台窗口的线程分配的权限稍高于其他线程。
代码如下:
- static class Program
- {
- /// <summary>
- /// 该函数设置由不同线程产生的窗口的显示状态。
- /// </summary>
- /// <param name="hWnd">窗口句柄</param>
- /// <param name="cmdS