不错呦!smile@林凯西,确保“准备文件”中的几个文件都有安装,S...您好,看了您这篇帖子觉得很有帮助。但是有个问题想请...我的修改过了怎么还被恶意注册呢 @jjjjiiii 用PJ快9年了,主要是A...PJ3啊,貌似很少有人用PJ了,现在不是WP就是z...@332347365,我当时接入时错误码没有-10...楼主,ChkValue值应为-103是什么意思呢?...大哥 你最近能看到我发的信息,请跟我联系,我有个制...
使用FindWindowEx获取多个窗体示例
编辑:dnawo 日期:2009-09-02
下边例子获取所有打开的记事本程序,并写入字符串"mzwu.com":
Module1.bas:
form1代码:
Module1.bas:
复制内容到剪贴板
程序代码

Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_CHAR = &H102
'虚拟码转为扫描码
Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
Dim s As String
Dim Firstbyte As String 'lparam参数的24-31位
If flag = WM_KEYDOWN Then '如果是按下键
Firstbyte = "00"
Else
Firstbyte = "C0" '如果是释放键
End If
Dim Scancode As Long
'获得键的扫描码
Scancode = MapVirtualKey(VirtualKey, 0)
Dim Secondbyte As String 'lparam参数的16-23位,即虚拟键扫描码
Secondbyte = Right("00" & Hex(Scancode), 2)
s = Firstbyte & Secondbyte & "0001" '0001为lparam参数的0-15位,即发送次数和其它扩展信息
MakeKeyLparam = Val("&H" & s)
End Function
Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Public Const WM_CHAR = &H102
'虚拟码转为扫描码
Function MakeKeyLparam(ByVal VirtualKey As Long, ByVal flag As Long) As Long
Dim s As String
Dim Firstbyte As String 'lparam参数的24-31位
If flag = WM_KEYDOWN Then '如果是按下键
Firstbyte = "00"
Else
Firstbyte = "C0" '如果是释放键
End If
Dim Scancode As Long
'获得键的扫描码
Scancode = MapVirtualKey(VirtualKey, 0)
Dim Secondbyte As String 'lparam参数的16-23位,即虚拟键扫描码
Secondbyte = Right("00" & Hex(Scancode), 2)
s = Firstbyte & Secondbyte & "0001" '0001为lparam参数的0-15位,即发送次数和其它扩展信息
MakeKeyLparam = Val("&H" & s)
End Function
form1代码:
复制内容到剪贴板
程序代码

Private Sub Form_Load()
Dim notepad, edit As Long
notepad = FindWindowEx(0, 0, "Notepad", vbNullString) '获取记事本句柄
Do While (notepad > 0)
edit = FindWindowEx(notepad, 0, "Edit", vbNullString) '获取记事本的输入框句柄
PostMessage edit, WM_CHAR, Asc("m"), MakeKeyLparam(Asc("m"), WM_KEYDOWN) '输入m
PostMessage edit, WM_CHAR, Asc("z"), MakeKeyLparam(Asc("z"), WM_KEYDOWN) '输入z
PostMessage edit, WM_CHAR, Asc("w"), MakeKeyLparam(Asc("w"), WM_KEYDOWN) '输入w
PostMessage edit, WM_CHAR, Asc("u"), MakeKeyLparam(Asc("u"), WM_KEYDOWN) '输入u
PostMessage edit, WM_CHAR, Asc("."), MakeKeyLparam(Asc("."), WM_KEYDOWN) '输入.
PostMessage edit, WM_CHAR, Asc("c"), MakeKeyLparam(Asc("c"), WM_KEYDOWN) '输入c
PostMessage edit, WM_CHAR, Asc("o"), MakeKeyLparam(Asc("o"), WM_KEYDOWN) '输入o
PostMessage edit, WM_CHAR, Asc("m"), MakeKeyLparam(Asc("m"), WM_KEYDOWN) '输入m
notepad = FindWindowEx(0, notepad, "Notepad", vbNullString) '获取下一个记事本句柄
Loop
End Sub
Dim notepad, edit As Long
notepad = FindWindowEx(0, 0, "Notepad", vbNullString) '获取记事本句柄
Do While (notepad > 0)
edit = FindWindowEx(notepad, 0, "Edit", vbNullString) '获取记事本的输入框句柄
PostMessage edit, WM_CHAR, Asc("m"), MakeKeyLparam(Asc("m"), WM_KEYDOWN) '输入m
PostMessage edit, WM_CHAR, Asc("z"), MakeKeyLparam(Asc("z"), WM_KEYDOWN) '输入z
PostMessage edit, WM_CHAR, Asc("w"), MakeKeyLparam(Asc("w"), WM_KEYDOWN) '输入w
PostMessage edit, WM_CHAR, Asc("u"), MakeKeyLparam(Asc("u"), WM_KEYDOWN) '输入u
PostMessage edit, WM_CHAR, Asc("."), MakeKeyLparam(Asc("."), WM_KEYDOWN) '输入.
PostMessage edit, WM_CHAR, Asc("c"), MakeKeyLparam(Asc("c"), WM_KEYDOWN) '输入c
PostMessage edit, WM_CHAR, Asc("o"), MakeKeyLparam(Asc("o"), WM_KEYDOWN) '输入o
PostMessage edit, WM_CHAR, Asc("m"), MakeKeyLparam(Asc("m"), WM_KEYDOWN) '输入m
notepad = FindWindowEx(0, notepad, "Notepad", vbNullString) '获取下一个记事本句柄
Loop
End Sub
评论: 0 | 引用: 0 | 查看次数: 6579
发表评论
请登录后再发表评论!