改写cpp到py练习,主要是回调函数原型比较烦点
py版枚举窗口标题pyallwins.py如下:
# -*- coding:utf-8 -*-
# 2022.7.8 cpp改进成py
from ctypes import *
defenumproc(hwnd, lParam):
buff = create_unicode_buffer(256)
user32.SendMessageW(hwnd, 0x0d, 256, buff) # WM_GETTEXT=0x0d
print('hwnd = {0:#010x} title = {1}'.format(hwnd,buff.value))
returnTrue
user32 = windll.user32
ENUMFUN = WINFUNCTYPE(c_bool, c_ulong, POINTER(c_ulong))
user32.EnumWindows(ENUMFUN(enumproc), 0)
以前的cpp版allwins.cpp如下:
#include<windows.h>
#include<stdio.h>
BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
charBuff[256];
SendMessage(hwnd, WM_GETTEXT, 256, (LPARAM)Buff);
printf("hwnd = 0x%08x, title = %s\n", hwnd, Buff);
return TRUE;
}
intmain(intargc, char*argv[])
{
EnumWindows(EnumWindowsProc, 0);
return0;
}