如何将命令行参数传递给QT中已经打开的程序?

时间:2016-09-09 23:52:59

标签: qt command-line

我想知道如何将命令行参数传递给已打开的程序。因此用户运行“backup.exe -job awef”并且backup.exe识别出已经打开的进程并将参数传递给已经打开的进程,以便用户可以命令程序从命令行或快捷方式执行他们想要的操作在窗户。 谢谢!

2 个答案:

答案 0 :(得分:1)

根据https://doc.qt.io/archives/qtextended4.4/qtopiadesktop/qtsingleapplication.html#QtSingleApplication

,您可以使用处理messageReceived上的命令行参数的QtSingleApplication来实现目标

在应用程序开始时,您需要检查是否可以使用命令行参数sendMessage到已运行的实例,然后退出。否则,您将继续启动您的应用,如下所示

int main(int argc, char* argv[])
{
  QtSingleApplication app("MySingleInstance", argc, argv);

  // try to send commandline arguments
  if(app.sendMessage(app.arguments().join("$")))
  {
        return 0;
  }

  /* connect your messageRecieved signal to slot
  SomeClass::slotLoadCommandLine to be able to handle 
  the commandline arguments from sendMessage*/
  QObject::connect(qApp, SIGNAL(messageReceived(QString)),
                   SomeClass, SLOT(slotLoadCommandLine(QString)));

   //start your application
   return app.exec();
}

修改

答案 1 :(得分:0)

可以使用QT 5的修补QtSingleApplication库,如下所述: https://forum.qt.io/topic/71778/what-happened-to-qtsingleapplication