1

私のプロジェクトでは、cli プログラムにコマンドを時々送信する GUI プログラムを作成しました。私はこのようにします:

system("folder\\program.exe -d folder\\inputFile.dat folder\\outputPath");

明らかにそれらの名前はありませんが、アイデアはわかります。私のGUIプログラムがこれらのコマンドを送信する場合を除いて、これは正常に機能し、コマンドプロンプトウィンドウが開き、cliプログラムが行うはずのことをすべて実行します。それは非常に悪く、不潔に見えます。

cliプログラムウィンドウを「隠す」ことができますが、必要なことを黙って実行する方法はありますか?

御時間ありがとうございます :)

編集: QDesktopServices と QUrl を使用してプログラムを呼び出すというオリーブの手法を試しました:

QDesktopServices::openUrl(QUrl("folder\\program.exe -d folder\\inputFile.dat folder\\outputPath"));

コンソール ウィンドウは表示されませんが、プログラムはまったく呼び出されませんでした。オリジナルの system() コマンドではなく、オリーブの手法を使用するときにパスに変更を加える必要はありますか?

4

5 に答える 5

2

クロス プラットフォーム ソリューションが必要かどうか判断できません。通常、start を使用して Windows を実行すると、コマンド ウィンドウが非表示になります。

system("start program.exe -d inputFile.dat outputPath");
于 2013-08-19T11:26:26.580 に答える
1

私はこの問題を次のように解決しました:

QProcess::execute("start program.exe -d inputFile.dat outputPath");

問題は、これを一度しかできないことです。もう一度電話をかけようとするたびに、うまくいきません。これを隠しているのが「スタート」です。それを取り出すと、コンソールが見えるようになります。それはただの空白です。

プログラムを再度実行する前に、プログラムを「終了」する方法が必要なようです。(パスに「開始」を追加する理由/理由がわからないので、私は何と言いますか)

于 2013-08-19T12:12:03.753 に答える