2017-08-04 73 views
-1

我正在写一个代码,需要访问游戏死岛上的内存文件,但问题是,当我运行它说它无法找到窗口的代码。我试过用其他程序,它的工作原理。我试过它在任务管理器中的名称,但它仍然不起作用。这里是我的代码 HWND hWnd = FindWindowW(NULL, L"Dead Island - Definitive Edition");找不到窗口C++

+0

我也尝试过使用spy ++,它的名字和它的名字一样 – Bleh

回答

0

模式1:使用::FindWindowEx()

模式2:从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(); 
} 
0

有你的窗口句柄(设置的死岛的exe文件名!)确保死岛EXE被称为“死岛”而不是“DeadIsland.exe”?