【发布时间】:2016-08-20 19:12:06
【问题描述】:
我正在使用 Mutex 将我的应用程序限制为一个实例。这是代码:
HANDLE hMutex;
hMutex = CreateMutex(NULL, FALSE, "MyTestApp");
if(hMutex == NULL)
ShowMessage(GetLastError());
else
if(GetLastError() == ERROR_ALREADY_EXISTS) {
ShowMessage("Application already running!");
// activate already running instance ?!
return -1;
}
我想扩展它以激活已经运行的实例。怎么做?谢谢。
【问题讨论】:
-
“激活”是什么意思?如果它已经在运行,它不是已经激活了吗?
-
也许得到一个 HWND 和
SetForegroundWindow?在这种情况下,您可以使用EnumWindows。 -
@Galik 通过“激活”我的意思是已经运行的实例显示在屏幕上,即使它可能被最小化等等。
-
@user9000 我想到了,但是新的和已经运行的实例具有相同的标题,这在枚举时可能会出现问题。
-
@Tracer 那么你可以比较 HWND 吗?
标签: c++ c++builder vcl