Qt中的单实例应用程序

时间:2013-08-29 05:14:52

标签: c++ qt

我想将.exe文件(更具体地说是控制台应用程序)集中到第一次启动它的一个正常运行的程序,但是当第二次执行时(第一次存在)它可以将焦点转移到第一个启动的程序。 Qt中有可能吗?

1 个答案:

答案 0 :(得分:10)

对于单个实例,请阅读 Run only one instance of a Qt application

忽略可移植性,如果您在Windows上运行,另一种常见方法是在应用程序启动时创建named pipe(或named mutex),并在退出之前将其销毁。如果命名管道已存在,则另一个实例已在运行。您甚至可以写入命名管道,要求另一个实例将其窗口置于前面,尽管控制台应用程序可能无法从中受益。

关注现有实例的另一种方法是找到已经运行的实例的窗口,然后在其HWND或平台上的相应功能上调用 SetFocus