无法找到C ++窗口

时间:2017-08-04 02:36:47

标签: c++ window

我正在编写一个代码,需要访问游戏死岛中的内存文件,但问题是当我运行代码时它说它无法找到窗口。我尝试过其他程序并且有效。我已经尝试了它在任务管理器中的名称,但仍然无效。这是我的代码     HWND hWnd = FindWindowW(NULL, L"Dead Island - Definitive Edition");

2 个答案:

答案 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" ?