所以今天我决定用windows.h搞砸了一下,我想练习一点练习,这是我写的代码,但它给了我头疼。
它一直返回0,所以没有名称被传递到ExecName,如果我用GetLastError()查找,我得到的错误是溢出错误。
我尝试了不同的方法获取可执行文件'名字,但它总是相同。
#include <iostream>
#include <Windows.h>
#include <Psapi.h>
TCHAR* ExeToFind = "Discord.exe";
BOOL CALLBACK CB_EW(
_In_ HWND hwnd,
_In_ LPARAM lParam
)
{
TCHAR ExecName[MAX_PATH];
DWORD ProcesID = NULL;
GetWindowThreadProcessId(hwnd, &ProcesID);
HANDLE handle = OpenProcess(NULL, false, ProcesID);
if (GetModuleFileNameEx(handle, NULL, ExecName, MAX_PATH) == 0) {
std::cout << "Error " << GetLastError();
return true;
}
//GetWindowText(hwnd, ExecName, GetWindowTextLength(hwnd)+1);
//GetProcessImageFileName(hwnd, ExecName, MAX_PATH);
std::cout << ExecName;
if (ExecName == ExeToFind) {
std::cout << "Here it is\n";
return false;
}
else {
std::cout << "next\n";
return true;
}
}
int main()
{
//HWND hWnd = FindWindow(0,0);
EnumWindows(CB_EW, NULL);
while (true) {
}
return 0;
}
我做错了什么?
答案 0 :(得分:0)
这是一个权限问题,而不是使用NULL作为OpenProcess的访问权限,我使用MAXIMUM_ALLOWED并且它有效