0

我有一个运行主应用程序的工具 - 两者都是QApplications. 在我启动主应用程序的工具中QProcess::startDetached("myapp.exe", QStringList() << "-arg1" << "-arg2", "C:/myFolder/");

然后该工具完成其工作,主应用程序仍在工作。

我可以再次启动该工具,并通过QSharedMemory. 但是如果主应用程序打开了模态对话框,它就无法处理新命令。

我需要从工具中确定主应用程序正忙于模式对话框并返回某种错误。

谁能告诉我最简单的方法是什么。

我有两个想法,但他们真的不知道其中任何一个是否可行:

  1. 使用QApplication::activeModalWidget(),但如何QApplication*从工具中获取主应用程序?

  2. 将主应用程序繁忙的信息放在共享内存中,该工具会在关闭之前对其进行检查。- 我不确定主应用程序在忙于模式对话框时是否能够将某些内容保存在共享内存中。

4

1 回答 1

2

就个人而言,我会在主应用程序中使用QLocalServer ,在工具中使用QLocalSocket

当主应用程序启动时,它启动本地服务器运行,允许工具连接到它并根据需要进行通信。

在最基本的层面上,如果该工具可以连接到服务器,您就知道主应用程序正在运行。但是,我建议在 QSharedMemory 上使用这种 IPC 机制。

正确完成后,该工具可以愉快地断开连接并重新连接而不会出现问题。

Qt 提供了如何将QLocalServerQLocalSocket一起使用的示例

于 2014-09-11T15:49:06.020 回答