2017-08-04 64 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」?