0
解決するには次の問題があります(VS2012、C++) 特定のHTAアプリケーションが私のEXEから実行されているかどうかを調べる必要があります。そのためには、プロセスmshtaを見つけて、正しい引数を持っているかどうかを確認する必要があります(「mshta somehta.hta」として開始されているはずです)。私の最初の試みは、私が今行うことができるプロセス/モジュールを反復することでした。 mshtaとそのPIDが表示されています。しかし、私は情報を得る方法、それがどのように開始されたのかを見出しませんでした。それを行う方法はありますか?C++はプロセスを処理し、各プロセスのコマンドライン引数を調べます
ProcessExists(wchar_t* processName)
{
DWORD aProcesses[1024], cbNeeded, cProcesses;
unsigned int i;
if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded))
{
return false;
}
// Calculate how many process identifiers were returned.
cProcesses = cbNeeded/sizeof(DWORD);
// Print the name and process identifier for each process.
for (i = 0; i < cProcesses; i++)
{
if(aProcesses[i] != 0)
{
PrintProcessNameAndID(aProcesses[i]);
}
}
return false;
}
void PrintProcessNameAndID(DWORD processID)
{
TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
// Get a handle to the process.
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE, processID);
// Get the process name.
if (NULL != hProcess)
{
HMODULE hMod;
DWORD cbNeeded;
if (EnumProcessModules(hProcess, &hMod, sizeof(hMod),
&cbNeeded))
{
GetModuleBaseName(hProcess, hMod, szProcessName,
sizeof(szProcessName)/sizeof(TCHAR));
}
}
// Print the process name and identifier.
dprintf(TEXT("%s (PID: %u) %s %s\n"), szProcessName, processID);
// Release the handle to the process.
CloseHandle(hProcess);
}
はhttp://stackoverflow.com/questions/6530565/getting-another-process-command-line-in-windowsを見ます – Hayt