本篇后不会提供新过程.以后靠大家自己做吧...
 
内容:
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。