関数を使用して C コードsystem()
を呼び出しました。certmgr.exe
実行可能ファイルを起動すると、証明書が正常にインストールされたことを示すコマンド プロンプトが表示されます。
しかし、コマンドプロンプトを開いてほしくありません。どうやってするか??
C言語で「exe」を呼び出すために利用できる他の方法..
ありがとう、、、
Windows でこれを行う最も簡単な方法は、ShellExecute
. コンソールSW_HIDE
ウィンドウが表示されないようにします。
代わりに使用することもできますCreateProcess
が、呼び出すのは少し面倒です。CREATE_NO_WINDOW
コンソール ウィンドウを非表示にするには、フラグを使用します。
私は何も実行するためにシステムを使用しません..これが理由です:http ://www.cplusplus.com/forum/articles/11153/
ShellExecuteを使用してアプリケーションを実行できますhttp://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspxSW_HIDEを渡すと、完了です。
cmd.exe
サイレント/バックグラウンドで実行する方法はありません。ただし、start
コマンドとそれに関連する/B
オプションを調べてください。
別のウィンドウを起動して、指定したプログラムまたはコマンドを実行します。
START ["タイトル"] [/D パス] [/I] [/MIN] [/MAX] [/SEPARATE | /共有] [/低 | /ノーマル | /高 | /リアルタイム | /ABOVENORMAL | /BELOWNORMAL] [/AFFINITY] [/WAIT] [/B] [コマンド/プログラム] [パラメータ]
[...] B 新しいウィンドウを作成せずにアプリケーションを起動します。アプリケーションの ^C 処理は無視されます。アプリケーションが ^C 処理を有効にしない限り、^Break がアプリケーションを中断する唯一の方法です。
あなたはより良くなるでしょうCreateProcess
。
WINAPI には、CreateProcess()
別の実行可能ファイルを実行するために使用できる機能があります。この関数にはいくつかの引数があり、 (プロセス作成フラグ引数から)のコンソール ウィンドウを表示しないためのメカニズムを提供する場合があります。certmgr.exe
CREATE_NO_WINDOW プロセスは、コンソール ウィンドウなしで実行されているコンソール アプリケーションです。したがって、アプリケーションのコンソール ハンドルは設定されません。
このリンクでTEDが回答したことで、ようやく助けになりました...
これは将来誰かを助けるかもしれません...
他の人は、CreateProcess の使用について言及しています (おそらく出力をリダイレクトするため)。これが発生する一般的な理由は、「システム」を介して実行しているプログラムがコマンドライン プログラムであるためです。自分でコンパイルする場合は、代わりに GUI プログラムとしてビルドすることで、コンソール ウィンドウを取り除くことができます。これを行うには、Windows.h をインクルードし、main() の代わりに WinMain() をエントリ ポイントとして使用します。