¿Cómo obtengo el nombre del proceso de un PID usando C++ en Windows?Cómo obtener el nombre del proceso en C++
Respuesta
Si está tratando de obtener el nombre de la imagen ejecutable de un proceso determinado, eche un vistazo a GetModuleFileName.
Supongo que la función OpenProcess debería ayudar, dado que su proceso posee los derechos necesarios. Una vez que obtenga un control para el proceso, puede usar la función GetModuleFileNameEx para obtener la ruta completa (ruta al archivo .exe) del proceso.
#include "stdafx.h"
#include "windows.h"
#include "tchar.h"
#include "stdio.h"
#include "psapi.h"
// Important: Must include psapi.lib in additional dependencies section
// In VS2005... Project > Project Properties > Configuration Properties > Linker > Input > Additional Dependencies
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE Handle = OpenProcess(
PROCESS_QUERY_INFORMATION | PROCESS_VM_READ,
FALSE,
8036 /* This is the PID, you can find one from windows task manager */
);
if (Handle)
{
TCHAR Buffer[MAX_PATH];
if (GetModuleFileNameEx(Handle, 0, Buffer, MAX_PATH))
{
// At this point, buffer contains the full path to the executable
}
else
{
// You better call GetLastError() here
}
CloseHandle(Handle);
}
return 0;
}
Puede obtener el nombre del proceso mediante el uso de la API de Win32 GetModuleBaseName después de tener el identificador de proceso. Puede obtener el control del proceso utilizando OpenProcess.
Para obtener el nombre del ejecutable también puede usar GetProcessImageFileName.
Comprobar las funciones enumprocess en la biblioteca de herramientas de ayuda:
http://msdn.microsoft.com/en-us/library/ms682629(v=vs.85).aspx
buen ejemplo @http://msdn.microsoft.com/en-us/library/ms682623(v=vs.85).aspx
Pruebe esta función:
std::wstring GetProcName(DWORD aPid)
{
PROCESSENTRY32 processInfo;
processInfo.dwSize = sizeof(processInfo);
HANDLE processesSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
if (processesSnapshot == INVALID_HANDLE_VALUE)
{
std::wcout << "can't get a process snapshot ";
return 0;
}
for(BOOL bok =Process32First(processesSnapshot, &processInfo);bok; bok = Process32Next(processesSnapshot, &processInfo))
{
if(aPid == processInfo.th32ProcessID)
{
std::wcout << "found running process: " << processInfo.szExeFile;
CloseHandle(processesSnapshot);
return processInfo.szExeFile;
}
}
std::wcout << "no process with given pid" << aPid;
CloseHandle(processesSnapshot);
return std::wstring();
}
- 1. ¿Cómo obtener el ID del proceso del nombre del proceso?
- 2. ¿Cómo obtener el nombre actual del proceso en Linux?
- 3. obtener el nombre del proceso desde el proceso id (win32)
- 4. ¿Cambiar el nombre del proceso en C#?
- 5. Win32API - ¿Cómo obtener el nombre de archivo del proceso desde el control del proceso?
- 6. C++ Obtener nombre de usuario Proceso De
- 7. ¿Cómo obtener el nombre del proceso de una aplicación?
- 8. Obtener nombre del proceso por PID
- 9. ¿Cómo obtener el PID de un proceso dando el nombre del proceso en Mac OS X?
- 10. Cambiar el nombre del proceso en Linux
- 11. Obtener el nombre del proceso de pid o manejar
- 12. ¿Cómo obtener el nombre del mes en C#?
- 13. Obtener hwnd por identificación del proceso C++
- 14. Obtener el nombre del producto del archivo msi en C#
- 15. ¿Obtiene el nombre del proceso actual (ejecutable) en Go?
- 16. ¿Cómo obtener el nombre de usuario del proceso por PID en Mac OS?
- 17. ¿Cómo controlar el proceso del demonio C++?
- 18. Obtener el tipo MIME del nombre de archivo en C
- 19. Detectando el nombre de usuario del proceso ID
- 20. android, cómo obtener el nombre del paquete?
- 21. Obtener el nombre del elemento
- 22. ¿Cómo obtener el nombre completo del tipo?
- 23. Cómo obtener el nombre del país
- 24. (Django) cómo obtener el nombre del mes?
- 25. jquery cómo obtener el nombre del padre
- 26. ¿Cómo cambiar el nombre del proceso java.exe/javaw.exe?
- 27. ¿Cómo obtengo el nombre del proceso de un puerto abierto en C#?
- 28. C# obtener el nombre del directorio de la excepción DirectoryNotFoundException
- 29. ¿Cómo obtener solo el nombre del archivo en el preprocesador?
- 30. obtener el nombre de la aplicación del nombre del paquete
GetModuleFileName no toma en consideración PID . Simplemente proporciona la ruta de acceso totalmente calificada para el archivo que contiene el módulo especificado. –