QT应用程序在OSX中启动另一个应用程序
QT app starting another app in OSX
我当前正在开发一个代理" apent.app",该代理必须扫描您的USB端口,如果它检测到USB设备,则应用程序启动了一个名为" filebrowser.app"的应用程序。<<<<<<<<<<
我希望Agent.App位于FileBrowser.App中以避免多个应用程序。
我的第一个应用程序FileBrowser是在QT创建者下的QT/C 中开发的。我还在QT创建者下开发了Ament.App。
我认为我需要在filebrowser.pri中声明的agent.pri来确保filebrowser.app将包含它。
我在代理中所做的是:
int main()
{
PulsUsbDetection *MyUSBDevice = new PulsUsbDetection;
if(MyUSBDevice->isPulsConnected() == true) {
char *filepath = "/Applications/puls_connect.app";
string command = "open " + filepath;
system(command.c_str());
}
return 0;
}
这是我主要可以做的最糟糕的事情,如果应用程序不在应用程序中。
我确实有2个问题:
- 当代理在filebrowser.app内部? 时,如何允许Agent.App启动FileBrowser.App。
- 如何确保Agent.App将包含在FileBrowser.App中?
非常感谢
我希望Agent.App位于FileBrowser.App中以避免多个应用程序。
您是否考虑过一个单个程序,其中包括两个应用程序的功能,并且选择(内部()内部())哪些功能是基于例如。命令行参数?这将更容易实现,并且还会使您的安装程序包更小。就是说...
如何确保将Agent.App包含在FileBrowser.App中?
编译两个程序后,将Agent.App文件夹移动到fileBrowser.app/contents/resources文件夹中。您可以使用shell命令或bash脚本来执行此操作,或者只是在filebrowser.app上右键单击。。
如何允许Agent.App启动FileBrowser.App当代理时 是在FileBrowser.app?
内
您要做的第一件事就是找到"代理"可执行文件所在的目录的路径。幸运的是,QT有一种方法:您只需调用qapplication :: applicationdirpath()。P>
因此,例如,如果将您的fileBrowser.App放置在/申请中,并且将Agent.App放置在fileBrowser.app/contents/resources(如上所述)中(如上所述),则上述函数调用将返回类似的字符串",例如"/applications/filebrowser.app/contents/resources/agent.app/contents/macos"。
第二步是从该字符串派生到FileBrowser应用程序的路径。那应该很简单:
// This code to be run in the agent app, to launch the FileBrowser app...
QString agentExecutableDirPath = QApplication::applicationDirPath();
QString fileBrowserExecutablePath = agentExecutableDirPath + "../../../../MacOS/FileBrowser";
system(QFile::encodeName(fileBrowserExecutablePath).constData()); // run it
请注意,使用QT的QProcess API启动FileBrowser进程的行为可能会更好,而不是通过拨打System() - 特别是,直到FileBrowser Process Exits退出,System()呼叫才会返回,这将具有冻结您的GUI的副作用。
- QSerialPort 在应用程序启动之前正在使用中
- C++ - 从 MFC 应用程序启动记事本,并将其默认标题从 "Untitled - Notepad" 更改为其他内容
- 在应用程序启动时停靠 QDockWidget?
- 在应用程序启动时读取文件
- osX - 如何从我的 QT 应用程序启动另一个程序
- 如何跟踪 C++14 中的控制台应用程序启动的次数?
- 调试从 Linux 中的另一个C++应用程序启动的 python 脚本
- 添加新对话框后,MFC 应用程序启动失败并"DLL Initialization Failed"
- 在应用程序启动之前做某事
- 基于CDialog的应用程序启动时,如何将我的辅助对话框窗口带到顶部
- 在Qt和C++中从另一个应用程序启动一个应用软件会产生问题
- 在 C++/STL/MFC 应用程序启动早期发生的致命异常中,是否可以信任堆栈回溯符号名称?
- 从控制台应用程序启动窗口应用程序
- 如何从另一个C++控制台应用程序启动/结束C++控制台应用程序
- 从 MFC(c++) 应用程序启动的可执行 jar 中获取返回值
- 从 MFC 应用程序启动 Java 时,在 MFC 应用程序中显示等待光标,直到它完成其进程
- 从控制台应用程序启动控制台应用程序
- Windows应用程序启动我的控制台
- 从应用程序启动 Linux 服务时避免套接字继承C++
- 如何在应用程序启动后隐藏其命令提示符