プロセスIdからGetModuleBaseName関数を利用して、プロセス名を取得します。 ポイントは、GetModuleBaseName関数の2番目の引数(hModule)をNULLで渡すことで、プロセス名を取得できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <tchar.h> #include <iostream> #include <windows.h> #include <psapi.h> // lib #pragma comment ( lib, "psapi.lib" ) /* プロセスIdからプロセス名を取得します。 */ int _tmain ( int argc , _TCHAR* argv[] ) { /* std::wcoutのロケールを設定 これを設定するだけで、std::wcoutで日本語が表示される ようになります。 */ std::wcout.imbue( std::locale( "" , std::locale::ctype ) ); // プロセスIdの取得(カレントプロセス) DWORD dwProcessId = ::GetCurrentProcessId(); // プロセスハンドルをオープン HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwProcessId ); if ( NULL != hProcess ) { // プロセス名の受け取り場所 TCHAR waBaseName[ MAX_PATH ]; // プロセスハンドルからプロセス名を取得します。 ::GetModuleBaseName( hProcess, NULL, waBaseName, _countof( waBaseName ) ); // プロセス名の表示 std::wcout << L "プロセス名 = " << waBaseName << std::endl; // プロセスハンドルのクローズ ::CloseHandle( hProcess ); } // 正常終了 return ( 0 ); } |
プロセス名 = WabasabiCodeDebug.exe