環境変数の取得は、GetExitCodeProcess()関数で取得できます。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <windows.h> /* 指定されたプロセスの終了ステータスを取得する */ int _tmain ( int argc , _TCHAR* argv[] ) { // 標準出力にユニコード出力する setlocale( LC_ALL, "Japanese" ); HRESULT hResult = E_FAIL; STARTUPINFO tStartupInfo = { 0 }; PROCESS_INFORMATION tProcessInfomation = { 0 }; /* プロセスの起動(pingを起動する) */ BOOL bResult = CreateProcess( L"c:¥¥Windows¥¥System32¥¥PING.exe" , L"-6 127.0.0.1" , NULL , NULL , FALSE , 0 , NULL , NULL , &tStartupInfo , &tProcessInfomation ); if ( 0 == bResult ) { return( HRESULT_FROM_WIN32( ::GetLastError() ) ); } /* プロセスの終了を待つ */ DWORD dwResult = ::WaitForSingleObject( tProcessInfomation.hProcess , INFINITE ); if ( WAIT_FAILED == dwResult ) { hResult = HRESULT_FROM_WIN32( ::GetLastError() ); goto err; } /* プロセスの終了コードを取得する */ DWORD dwExitCode; bResult = ::GetExitCodeProcess( tProcessInfomation.hProcess , &dwExitCode ); if ( 0 == bResult ) { hResult = HRESULT_FROM_WIN32( ::GetLastError() ); goto err; } // 終了コードの表示 wprintf( L"dwExitCode = %d¥n", dwExitCode ); err: // ハンドルの解放 ::CloseHandle( tProcessInfomation.hProcess ); ::CloseHandle( tProcessInfomation.hThread ); // 正常終了 return( 0 ); }
127.0.0.1 に ping を送信しています 32 バイトのデータ: 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 からの応答: バイト数 =32 時間 <1ms TTL=128 127.0.0.1 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 0ms、最大 = 0ms、平均 = 0ms dwExitCode = 0