2009-04-23 4 views

答えて

1

この関数のMSDN docsは、呼び出されたアプリケーションから終了コードを返さないことを明確にしています。

関数が成功すると機能 が失敗した場合、それが32より大きい 値を返し、それが は、障害の原因を示すエラー値を返します。 戻り値は、後方互換性のため HINSTANCEとしてキャストされます。 16ビットWindowsアプリケーションです。しかし、 は真のヒンステスではありません。 はint型にキャストすることができ、 と比較すると、32または以下の エラーコードと比較します。

getting exit statusのサンプルコードは、MSDNでも同様です。

2

ShellExecuteの代わりにShellExecuteExを使用して外部アプリケーションを起動します。

ShellExecuteExを呼び出す前に、ShellExecuteEx関数のパラメータのSEE_MASK_NOCLOSEPROCESSフラグを有効にします。 ShellExecuteEx関数のパラメータのhProcessフィールドに、開始したプロセスのハンドルが表示されます。

ShellExecuteExを:http://msdn.microsoft.com/en-us/library/bb762154(VS.85).aspx

その後、外部アプリケーションが終了するまで待機するWaitForSingleObject関数やその他のWAITFOR *関数を使用します。

のWaitForSingleObject:http://msdn.microsoft.com/en-us/library/ms687032.aspx

そして、外部プロセスの終了コードを読み取るためにGetExitCodeProcess関数を使用します。

GetExitCodeProcess:http://msdn.microsoft.com/en-us/library/ms683189(VS.85).aspx

+0

ありがとうございます。最終的に私のメインプログラムから実行されたJavaプログラムの考え方を変更したので、今はjvm終了コードを取得する必要はありません。 –

関連する問題