C FindWindow

注意FindWindow这个函数第一个参数,传入的是程序的类别,第二个参数传入的是那个程序的标题,需要写全。

第二个参数,必须是有窗口的进程的显示的title,进程名是不可以的。

我在b站,看到一个up主使用这个函数来确定游戏的pid,然后再去读写内存。我认为这样是不太合适的,因为有的游戏显示的title是会变化的,比如说泰拉瑞亚,每次都会出一个奇奇怪怪的标题,这样写出来的作弊程序每次都要修改。还是对拍一个进程快照,寻找进程名字比较好,这样能够应对游戏显示的名字的变化,同时也可以处理一些窗口进程和游戏进程不是一个进程的游戏。

使用第一个参数:

HWND hdl = FindWindow(L"Notepad", nullptr);
if (hdl == 0) {
cout << "Find window fail" << endl;
return -1;
}

使用第二个参数:

HWND hwnd = FindWindow(NULL, (LPCSTR)"C:\\Windows\\System32\\cmd.exe - little_game_for_ce.exe");

完整例子(这个是在vs2022上的):

#include"stdafx.h"
#include<iostream>
#include<vector>
#include<thread>
#include<stdio.h>
#include<windows.h>
#include<psapi.h>


using namespace std;


int main()
{

    //HWND hdl = FindWindow(L"Notepad", nullptr);
    //printf("%d\n", hdl);
    //if (hdl == 0) {
    //    cout << "Find window fail" << endl;
    //    return -1;
    //}
    auto s3 = L"计算器";
    auto s1 = L"Cheat Engine 7.3";
    HWND hwnd = FindWindow(NULL, LPCWSTR(s3));
    printf("%d\n", hwnd);
    if (hwnd == NULL)
    {
        printf("no windows\n");
        return 0;
    }
    return 0;
}
文章目录