初级
%p、size_t、%zd、%llu、sizeof
%p
用于输出地址,HWND
类型的也可以使用%p
输出size_t
:C语言源代码:typedef unsigned __int64 size_t;
- sizeof 返回值是
size_t
类型,打印的时候不能使用%d
,应该使用%zu
修改窗口标题
#include <stdio.h>
#include <Windows.h>
#include <locale.h>int main()
{HWND hWnd = FindWindowA(NULL, "微信"); // 获取窗口句柄if (NULL == hWnd){printf("错误代码:%d", GetLastError());return 0;}printf("窗口句柄:0x%p\n", hWnd);printf("初始化本地环境:%s\n", setlocale(NULL, ""));WCHAR lpString[255];printf("请输入需要设置的窗口标题:");wscanf_s(L"%254ls", lpString, (unsigned)_countof(lpString));wprintf(L"新窗口标题:%ls\n", lpString);if (SetWindowText(hWnd, lpString)){printf("修改成功!\n");}
}
FindWindowA
函数用于获取窗口句柄,还可以使用FindWindow和FindWindowW,FindWindow
与FindWindowW
是一样的,需要传入宽字符。SetWindowText
函数一共两个参数,第一个参数是窗口句柄,第二个参数是需要设置的新的窗口名字,是宽字符。
在C++中使用宽字符
printf("初始化本地环境:%s\n", setlocale(NULL, ""));
WCHAR lpString[255];
printf("请输入需要设置的窗口标题:");
wscanf_s(L"%254ls", lpString, (unsigned)_countof(lpString));
wprintf(L"新窗口标题:%ls\n", lpString);
使用宽字符需要先初始化本地环境使用setlocale
函数,包含在locale.h
头文件中,然后需要使用wscanf_s
函数来接收输入字符串,使用wprintf
函数进行打印。
获取进程PID
#include <Windows.h>
#include <stdio.h>/*
获取进程PID TID
GetWindowThreadProcessId
hWnd 窗口句柄
lpdwProcessId 一个DWORD类型的指针
*/int main()
{HWND hWnd = FindWindowA(NULL, "微信");if (NULL == hWnd){return 0;}printf("获取到的窗口句柄:0x%p\n", hWnd);DWORD dwProcessId;// GetWindowThreadProcessId((HWND)0x3F05E2, &dwProcessId); // 这样直接写窗口句柄也是可以的 不过需要强制类型转换GetWindowThreadProcessId(hWnd, &dwProcessId);printf("获取到的进程PID:0x%lX", dwProcessId);
}