J'utilise QT pour vérifier si le processus est en cours d'exécution et j'ai utilisé le même code dans le site msdn.Vérifiez si le processus est en cours d'exécution - Windows
Cela a fonctionné correctement sur Visual Studio mais j'ai un problème pour le faire fonctionner sur QT.
Voici le code:
bool matchProcessName(DWORD processID, std::string processName)
{
TCHAR szProcessName[MAX_PATH] = TEXT(L"notepad.exe");
// 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;
}
L'erreur que je reçois est la suivante:
erreur: ne peut pas convertir 'TCHAR *' à 'const char *' pour argument '1' à « int strcmp (const char *, const char *) '
Comment puis-je faire en sorte que cela fonctionne sur QT?
Merci beaucoup.
Mise à jour
J'ai aussi essayé ce code:
DWORD FindProcessId(char* processName)
{
char* p = strrchr(processName, '\\');
if(p)
processName = p+1;
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE)
return 0;
Process32First(processesSnapshot, &processInfo);
if (!strcmp(processName, processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
while (Process32Next(processesSnapshot, &processInfo))
{
if (!strcmp(processName, processInfo.szExeFile))
{
CloseHandle(processesSnapshot);
return processInfo.th32ProcessID;
}
}
CloseHandle(processesSnapshot);
return 0;
}
Je suis aussi obtenir une erreur: ne peut pas convertir 'WCHAR *' à 'const char *' pour l'argument '2' « int strcmp (const char *, const char *) '
Je préfère si je peux faire fonctionner la 2ème méthode!
Merci encore
J'ai essayé votre code il a retourné l'erreur: impossible de convertir 'TCHAR *' en 'const char *' pour l'argument '1' en 'int strcmp (const char *, const char *)' :( –
J'ai ajouté le mise en œuvre de l'autre fonction, je pense que vous avez juste besoin de la seconde avant – Serge
Je l'ai ajouté mais je reçois la même erreur:/http://prntscr.com/6l4nhf –