本篇后不会提供新过程.以后靠大家自己做吧...
内容: 1.我们将使用EnumWindows枚举Windows所有窗口。首先来看看MSDN说明: 函数功能:该函数枚举所有屏幕上的顶层窗口,办法是先将句柄传给每一个窗口,然后再传送给应用程序定义的回调函数。EnumThreadWindows函数继续到所有顶层窗口枚举完为止或回调函数返回FALSE为止函数原型:BOOL EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam); 参数: lpEnumFunc:指向一个应用程序定义的回调数指针,请参看EnumWindowsProc。 lPararm:指定一个传递给回调函数的应用程序定义值。 返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误信息,请调用GetLastError函数。 2.模块部分: ( hwnd , lpString , cch ) ( lpEnumFunc , lParam ) EnumWindowsProc( hwnd , lParam ) S S = (80, 0) (hwnd, S, 80) S = (S, (S, (0)) - 1) (S) > 0 Form1.List1.AddItem S EnumWindowsProc = 3.Form部分,我们需要一个List控件用于显示: Form_Load() EnumWindowsProc, 0& 4.运行程序,显示了所有窗口的文本。 5.好了,我们完成了核心程序。 现在我们要接着往下做三个工作:(1)只显示我们想要的窗口、(2)显示人物名称、(3)选择目标人物连接游戏窗口。 5.1.筛选枚举出来的窗口。这个很简单,只要在插入List之前的If中再加入一个判断窗口文本内容就可以实现。 (S) > 0 (S) = Form1.List1.AddItem S 5.2.显示人物名称,我想这个大家都会吧! (S) > 0 (S) = ProcID , hpID , BuffEnum(35) , ECXI , eax , hwnd, hpID ProcID = (PROCESS_ALL_ACCESS PROCESS_VM_OPERATION PROCESS_VM_READ PROCESS_VM_WRITE, , hpID) ProcID, &H8C9E54, ECXI, 4, 0 ProcID, ECXI + &H24, eax, 4, 0 ProcID, eax + &H390, ECXI, 4, 0 ProcID, ECXI, BuffEnum(0), 36, 0 = (BuffEnum, 36) Form1.List1.AddItem hpID & & ‘这里我耍了一个小聪明,可以省好多事。 5.3.选择目标窗口连接游戏。 当然要在List1_Click中插入代码了。我使用两个Form,先显示Form1选择游戏窗口,传递游戏窗口的PID给Form2,然后再Form2里OpenProcess即可。所以我的List1_Click代码: Form2.Show Me.Hide 6.写到这里,后面的大家就应该知道怎么吧。这次就不公布源码了,因为特征码的关系遭封杀的几率太大,另外这样也好给大家留出一些设计的空间。 注意: 如果你在原有程序的基础上,添加新的Form2用于选择游戏窗口,请设置从Form2启动。 程序关闭时别忘卸载隐藏的Form。
转载于:https://blog.51cto.com/zdj63/34402