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;
}