5

関数を使用して C コードsystem()を呼び出しました。certmgr.exe実行可能ファイルを起動すると、証明書が正常にインストールされたことを示すコマンド プロンプトが表示されます。

しかし、コマンドプロンプトを開いてほしくありません。どうやってするか??

C言語で「exe」を呼び出すために利用できる他の方法..

ありがとう、、、

4

5 に答える 5

5

Windows でこれを行う最も簡単な方法は、ShellExecute. コンソールSW_HIDEウィンドウが表示されないようにします。

代わりに使用することもできますCreateProcessが、呼び出すのは少し面倒です。CREATE_NO_WINDOWコンソール ウィンドウを非表示にするには、フラグを使用します。

于 2012-05-21T10:17:50.683 に答える
4

私は何も実行するためにシステムを使用しません..これが理由です:http ://www.cplusplus.com/forum/articles/11153/

ShellExecuteを使用してアプリケーションを実行できますhttp://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspxSW_HIDEを渡すと、完了です。

于 2012-05-21T10:20:14.400 に答える
3

cmd.exeサイレント/バックグラウンドで実行する方法はありません。ただし、startコマンドとそれに関連する/Bオプションを調べてください。

別のウィンドウを起動して、指定したプログラムまたはコマンドを実行します。

START ["タイトル"] [/D パス] [/I] [/MIN] [/MAX] [/SEPARATE | /共有] [/低 | /ノーマル | /高 | /リアルタイム | /ABOVENORMAL | /BELOWNORMAL] [/AFFINITY] [/WAIT] [/B​​] [コマンド/プログラム] [パラメータ]

[...] B 新しいウィンドウを作成せずにアプリケーションを起動します。アプリケーションの ^C 処理は無視されます。アプリケーションが ^C 処理を有効にしない限り、^Break がアプリケーションを中断する唯一の方法です。

あなたはより良くなるでしょうCreateProcess

于 2012-05-21T10:17:20.830 に答える
2

WINAPI には、CreateProcess()別の実行可能ファイルを実行するために使用できる機能があります。この関数にはいくつかの引数があり、 (プロセス作成フラグ引数から)のコンソール ウィンドウを表示しないためのメカニズムを提供する場合があります。certmgr.exe

CREATE_NO_WINDOW プロセスは、コンソール ウィンドウなしで実行されているコンソール アプリケーションです。したがって、アプリケーションのコンソール ハンドルは設定されません。

于 2012-05-21T10:18:25.893 に答える
0

このリンクでTEDが回答したことで、ようやく助けになりました...

これは将来誰かを助けるかもしれません...

他の人は、CreateProcess の使用について言及しています (おそらく出力をリダイレクトするため)。これが発生する一般的な理由は、「システム」を介して実行しているプログラムがコマンドライン プログラムであるためです。自分でコンパイルする場合は、代わりに GUI プログラムとしてビルドすることで、コンソール ウィンドウを取り除くことができます。これを行うには、Windows.h をインクルードし、main() の代わりに WinMain() をエントリ ポイントとして使用します。

于 2012-05-24T04:40:41.707 に答える