2017-08-04 2 views
-1

Ich schreibe einen Code, der auf eine Speicherdatei im Spiel tote Insel zugreifen muss, aber das Problem ist, wenn ich den Code ausführen, sagt es, dass es das Fenster nicht finden kann. Ich habe es mit anderen Programmen versucht und es funktioniert. Ich habe versucht, den Namen, dass es in Task-Manager ist und es immer noch nicht funktioniert. Hier ist mein Code HWND hWnd = FindWindowW(NULL, L"Dead Island - Definitive Edition");Kann Fenster nicht finden C++

+0

Ich habe auch versucht mit Spion ++ es kommt mit dem gleichen Namen wie es normalerweise tut – Bleh

Antwort

0

Modus 1: Verwenden Sie ::FindWindowEx()

Mode 2: Get Fenstergriff aus exe Namen

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

Haben Sie (Set exe Namen Dead Island!) dafür gesorgt, dass die Dead Island Exe "Dead Island" genannt wird und nicht "DeadIsland.exe"?