代码很简单,就不多做解释了:
#include <Windows.h>
#include <psapi.h>
#include <tchar.h>
POINT pt;
GetCursorPos(&pt);
HWND hwnd = WindowFromPoint(pt);
if (!hwnd) {
qDebug() << "no hwnd";
return;
}
DWORD processId = 0;
GetWindowThreadProcessId(hwnd, &processId);
if (processId == 0) {
qDebug() << "no processId";
return;
}
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, processId);
if (!hProcess) {
qDebug() << "no hProcess";
return;
}
const DWORD bufSize = MAX_PATH;
std::wstring processName(bufSize, L'\0');
DWORD ret = GetModuleFileNameEx(hProcess, NULL, processName.data(), MAX_PATH);
if (ret == 0) {
qDebug() << "no Process Name";
}
else {
processName.resize(ret);
qDebug() << "Process Name: " << processName;
}
CloseHandle(hProcess);
写日志用了Qt的库,你完全可以把 qDebug() 相关语句删掉,就不依赖Qt了。