使用C ++处理不同的应用程序

时间:2016-07-22 12:03:42

标签: c++ windows

有没有办法用c ++ / qt控制其他Windows应用程序?

我有:1000个特定图像格式的文件和可以打开它们的应用程序。此应用程序可以使用"另存为..."功能将这些文件保存在" .JPEG"逐个格式化。我想自动这样做。

有没有技术可以做到这一点?提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用QT,您可以使用QProcess实例运行单独的流程。

特别假设您的外部应用程序接受输入参数(例如要加载的文件路径和存储结果的文件路径。

QProcess shell;

QStringList argv;
//[setup argument-list]

shell.setProcessChannelMode(QProcess::MergedChannels);
shell.start(commandPath, argv); 
shell.waitForFinished();

请注意,QProcess可以用作IO流。这对于与流程交互很有用(例如,检索进度信息):

shell.start(commandPath, argv); 
shell.waitForReadyRead();

while(shell.state() == QProcess::Running || !shell.atEnd()){
   auto s = shell.readLine()

   //[do something with the current line of the process output]
}

QProcess::ExitStatus es =  shell.exitStatus () ;

当然,外部流程必须接受输入参数并通过其标准输出提供反馈以解决您的问题。