首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

怎么实现当一个程序的进程已经在运行的时候,你再打开此程序时,弹出已运行实例的界面

2012-09-10 
如何实现当一个程序的进程已经在运行的时候,你再打开此程序时,弹出已运行实例的界面如何实现当一个程序的

如何实现当一个程序的进程已经在运行的时候,你再打开此程序时,弹出已运行实例的界面
如何实现当一个程序的进程已经在运行的时候,你再打开此程序时,弹出已运行实例的界面:

想象一副场景,也许能让你更好的理解这个问题的确切意思:

当你打开一个程序A,并将它最小化到系统托盘,时间久了用户可能忘了此程序还开着,于是他想要用到程序A时,又去点击桌面上程序A的快捷键图标,试图打开程序A,此时我想做的是,直接弹出正在运行并且已经最小化在系统托盘里的程序A的实例。


SharedMemoryObject singleSMO("theProcess");
if (!singleSMO.beCreated())
  {
  这里添加代码弹出已经运行的程序界面
return 0;
  }

[解决办法]

C/C++ code
  //运行唯一实例 QSystemSemaphore sema("YourName",1,QSystemSemaphore::Open);  sema.acquire();// 在临界区操作共享内存 SharedMemory  QSharedMemory mem("dvd字幕校对工具");// 全局对象名  if (!mem.create(1))// 如果全局对象以存在则退出  {  HWND handle = FindWindow(L"QWidget",L"YourAppName"); if (handle == NULL) { int x= 0; }   ShowWindow(handle,SW_MAXIMIZE);   SetForegroundWindow(handle); sema.release();// 如果是 Unix 系统,会自动释放。  return 0;  }  sema.release();// 临界区 

热点排行