VB怎样获得系统打开的其它程序窗口[只知道EXE文件名]

来源:百度知道 编辑:UC知道 时间:2024/09/24 10:05:48
学VB时间不长,想用VB做一个联众军旗的自动走步器。
第1步:当 军旗[junqi.exe]启动后,桌面就弹出了程序的桌面窗口,但是窗口标题是不固定的[因为换了用户名,标题也会变化},必须先使用VPI函数通过程序内存中启动的EXE文件名 来得到分配到的PID号。
第2步:接着用枚举窗口的方式,使用API 函数EnumWindows和GetWindowThreadProcessId 得到系统里运行顶级窗口的所有句柄和PID号。
如果第1步中的PID和第2步中PID 有一样的,那就是自己要找的那个窗口,那个窗口句柄是。。。?

弄了好几天,代码总是写不成,好象根本无法比较,高分求高手指教,最好给个可运行的代码。
就是说建2个文本框,1个命令按纽,点下命令按纽就会在第1第2个文本里分别显示要找程序文件的 PID 与句柄号
现在只得到了第1个文本中的内容
我做的有错误的代码如下:
‘建立的模块中
ublic Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParamAs As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Public Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function Process32First Lib "kernel32" (ByVal hSnapS

Public Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParamAs As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Sub CloseHandle Lib "kernel32" (ByVal hPass As Long)
Public Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Public Const TH32CS_SNAPPROCESS = &H2&
Public Type PROCESSENTRY32
dwSize As Long
cntUseage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long