学习目标:
认识进程PID
认识线程TID
FindWindowA
GetWindowThreadProcessId //返回线程TID和进程PID
DWORD GetWindowThreadProcessId(
[in] HWND hWnd,
[out, optional] LPDWORD lpdwProcessId
);
/*
参数
[in] hWnd
类型:HWND
窗口的句柄。
[out, optional] lpdwProcessId
类型: LPDWORD
指向接收进程标识符的变量的指针。 如果此参数不为 NULL, GetWindowThreadProcessId 会将进程的标识符复制到 变量;否则,它不会。
返回值
类型:DWORD
如果函数成功,则返回值是创建窗口的线程的标识符。 如果窗口句柄无效,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
*/
学习目标:
认识进程PID
认识线程TID
FindWindowA
GetWindowThreadProcessId //返回线程TID和进程PID
植物大战僵尸中文版
MainWindow
#include <iostream>
#include<Windows.h>
int main()
{
//1 通过窗口标题或者类名 获取目标窗口句柄
//2 通过窗口句柄获取进程的PID,TID
HWND h = FindWindowA("MainWindow", "植物大战僵尸中文版");
printf("窗口句柄 h=%p\r\n", h);
DWORD pid=0, tid=0;
printf("&pid=%p\r\n", &pid);
// int 和long是等价
//DWORD 等价于 unsigned long
//DWORD* 等价于 LPDWORD
tid=GetWindowThreadProcessId(h, &pid); // a&b
printf("tid=%d pid=%d 16进制tid=%X 16进制pid=%X\r\n", tid, pid,tid,pid);
}