UWP 程序天生单实例。当然,新 API (10.0.17134)开始也提供了多实例功能。不过,传统 Win32 程序可就要自己来控制单实例了。
本文介绍简单的几个 Win32 方法调用,使 Win32 程序也支持单实例。
激活之前进程的窗口
我们可以通过进程名称找到此前已经启动过的进程实例,如果发现,就激活它的窗口。
[STAThread]
static void Main(string[] args)
{
var current = Process.GetCurrentProcess();
var process = Process.GetProcessesByName(current.ProcessName).FirstOrDefault(x => x.Id != current.Id);
if (process != null)
{
var hwnd = process.MainWindowHandle;
ShowWindow(hwnd, 9);