有时候程序需要做成单例的,就是系统中只能存在一份运行的示例,这个可以通过系统内核对象Metux来实现。让我们检测到系统中已有一份运行的实例时,最好的做法是将那个进程的主窗口显示给用户。首先想到的是调用SetForgroundWindow(),改方法可以将窗口变为前景窗口,即用户可以交互的窗口。但是当目标窗口是最小化的时候(而不是在他窗口的后面)这个调用并没有使窗口显示。
解决方法是模拟点击任务栏的窗口图标,像该窗口发送WM_SYSCOMMAND消息,
SendMessage(hWnd, WM_SYSCOMMAND, SC_RESTORE ,0);