1つのプロセスが実行されていない場合、特定のコンテキストメニューオプションを表示しないでください。プロセスが実行されているかどうか、またはプロセス名を使用していないかどうかを確認しています。
しかし、問題は、プロセス名が異なるWindowsプラットフォームで異なる方法で表示されていることです。
つまり、WindowsタスクバーのWindows64ビットプロセス名は「applicationname.exe」です。
一部のWindowsXPマシンには、「 applica〜2.exe」と同じプロセス名が表示されます。
プロセスが実行されているかどうかを確認するための一貫した方法を教えてください。
私の開発環境はC++とVisualStudio2010です
DWORD getProcessID(const std::wstring& processName)
{
PROCESSENTRY32 info;
info.dwSize = sizeof(info);
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if ( snapshot == INVALID_HANDLE_VALUE )
return 0;
Process32First(snapshot, &info);
if ( !processName.compare(info.szExeFile) )
{
CloseHandle(snapshot);
return info.th32ProcessID;
}
while ( Process32Next(snapshot, &info) )
{
if ( !processName.compare(info.szExeFile) )
{
CloseHandle(snapshot);
return info.th32ProcessID;
}
}
CloseHandle(snapshot);
return 0;
}