Soweit ich weiß, erlaubt QProcess Ihnen das nicht (es sei denn, Sie haben den Prozess selbst erzeugt) und tatsächlich nichts in Qt. Allerdings bietet Win32-API, einen Weg zu erreichen, was Sie durch EnumProcesses
Funktion wollen und ein komplettes Beispiel dafür, wie es zu benutzen ist auf Microsoft-Website zur Verfügung gestellt:
http://msdn.microsoft.com/en-us/library/ms682623.aspx
Um Sie PrintProcessNameAndID mit der folgenden Funktion ersetzen müssen:
bool matchProcessName(DWORD processID, std::string processName)
{
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));
}
}
// Compare process name with your string
bool matchFound = !_tcscmp(szProcessName, processName.c_str());
// Release the handle to the process.
CloseHandle(hProcess);
return matchFound;
}
[Diese Frage] (http://stackoverflow.com/questions/10422145/how-to-check-if-a-process-is-running-or-not) scheint passen Sie Ihre Bedürfnisse an, solange Sie das Objekt haben. – chris
Ja, aber ich weiß nicht, wie QProcess :: state() verwendet wird, so? QProcess :: state ("chrome.exe"); ?? – Random78952
Vermutlich können Sie ein 'QProcess'-Objekt durch den Prozessnamen mit einer Funktion erhalten und dann darauf zugreifen. – chris