从 HWND 到应用程序名称
From HWND to application name
我想获取应用程序名称(即 application.exe
) 来自窗口句柄HWND
,该句柄来自EVENT_SYSTEM_FOREGROUND
的SetWinEventHook
钩子的WINEVENTPROC
回调。
我已经有了进程 ID 并尝试将GetModuleFileName
与它一起使用,但我似乎缺少一些东西,因为它总是返回一个空字符串。
{
DWORD processId;
GetWindowThreadProcessId(hwnd, &processId);
wchar_t appName[MAX_PATH];
GetModuleFileName(reinterpret_cast<HMODULE>(processId), appName, MAX_PATH);
qDebug() << processId << QString::fromWCharArray(appName);
}
这是我试图做的,但我显然不明白什么。
GetModuleFileName(reinterpret_cast<HMODULE>(processId), ...);
完全不正确。进程 ID 不是HMODULE
,不能强制转换为这样的进程 ID。
您需要做的是在请求PROCESS_QUERY_LIMITED_INFORMATION
访问权限时将进程 ID 传递给OpenProcess()
。如果成功,则可以在从该函数返回的HANDLE
上使用QueryFullProcessImageName()
。
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 如何改变c++应用程序的视觉效果
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- phytec phyBOARD iMX-6在从闪存而不是SD卡运行qt5 opengles应用程序时表现不佳(FPS减半
- 由于选项卡顺序的原因,鼠标光标总是得到错误的hwnd-MFC应用程序
- 从 HWND 到应用程序名称
- Windows 8桌面应用程序,如何使用ID2D1D1DEVICECONTEXT渲染到HWND
- mfc c++通过编辑控件设置另一个应用程序的HWND地址
- 是否有任何应用程序有HWND