我正在编写一个代码,需要访问游戏死岛中的内存文件,但问题是当我运行代码时它说它无法找到窗口。我尝试过其他程序并且有效。我已经尝试了它在任务管理器中的名称,但仍然无效。这是我的代码
HWND hWnd = FindWindowW(NULL, L"Dead Island - Definitive Edition");
答案 0 :(得分:2)
模式1 :使用::FindWindowEx()
模式2 :从exe名称获取窗口句柄(!设置死岛的exe名称)
TCHAR* szExeName = _T("Dead Island"); //Dead Island.exe
HANDLE GetHandleOfDeadIsland()
{
HANDLE hDeadIsland = INVALID_HANDLE_VALUE;
HANDLE hSnap = INVALID_HANDLE_VALUE;
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(PROCESSENTRY32);
hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (INVALID_HANDLE_VALUE != hSnap)
{
if (Process32First(hSnap, &pe32))
{
do
{
//!!! Attention pe32.szExeFile always return exe file name. not window title.
if (NULL != _tcsstr(pe32.szExeFile, szExeName))
{
hDeadIsland = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pe32.th32ProcessID);
break;
}
} while (Process32Next(hSnap, &pe32));
}
}
return hDeadIsland;
}
int main()
{
HANDLE hDeadIsland = GetHandleOfDeadIsland();
if (INVALID_HANDLE_VALUE == hDeadIsland)
{
_tprintf(_T("Not Found\n"));
}
else
{
_tprintf(_T("Found\n"));
}
return GetLastError();
}
答案 1 :(得分:0)
你有没有确保死岛exe被叫做#34;死岛"而不是#34; DeadIsland.exe" ?