プロセスIdからGetModuleBaseName関数を利用して、プロセス名を取得します。 ポイントは、GetModuleBaseName関数の2番目の引数(hModule)をNULLで渡すことで、プロセス名を取得できます。
#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