7

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

4

1 回答 1

10

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

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

另一种关注现有实例的方法是找到已经运行的实例的窗口,然后在其上调用SetFocusHWND,或者在您的平台上调用相应的函数。

于 2013-08-29T05:24:14.920 回答