mfc如何在程序已运行的情况下再次打开成程序呼出已运行的程序?
如题。先谢谢各位了!
[解决办法]
或者用SetProp给应用程序主窗口设置属性
在程序初始化时,用GetProp查找每一应用程序主窗是否
有包含设置的特定属性。
如果有,激活并显示:
#define ID_GUI "0xa9a66d98, 0x18c7, 0x447b, 0x80, 0xc, 0xa3, 0x20, 0xea, 0x4f, 0xb6, 0xe8"CString g_szPropName = ID_GUI; HANDLE g_hValue = (HANDLE)1;BOOL CALLBACK EnumWndProc(HWND hwnd,LPARAM lParam){ HANDLE h = GetProp(hwnd,g_szPropName); if( h == g_hValue) { *(HWND*)lParam = hwnd; return false; } return true;}HWND oldHWnd = NULL;EnumWindows(EnumWndProc,(LPARAM)&oldHWnd); //枚举所有运行的窗口if(oldHWnd != NULL){ // AfxMessageBox("本程序已经在运行了"); ::ShowWindow(oldHWnd,SW_SHOWNORMAL); //激活找到的前一个程序 ::SetForegroundWindow(oldHWnd); //把它设为前景窗口 return false; //退出本次运行}