楼主的这种方法,是XP的方法,现在都过时了,win7的里面不适合。
其实我在16年,就发表了《vba空当接龙32147局》http://club.excelhome.net/thread-1304306-1-1.html。
当时我想实现能选局、自动打牌。
选局卡在点击“确定”按钮那儿,找不到句柄。自动打牌,当时手动F8可以,连续运行F5不行,今天回头看,还是只设置了DOWN键,没设置UP键。
win7,游戏的名称叫"空当接龙",不叫"空当接龙游戏 #617"。
SendMessage不能用,得用PostMessage。
我选取了部分玩法,就是你第一组的83、80、83、81、80.
程序如下:
- Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
- Private 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
- Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
- Private Declare Function SendMessage& Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
- Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
- Const WM_KEYDOWN = &H100
- Const WM_KEYUP = &H101
- Const WM_CLOSE = &H10
- Sub test() '空当接龙617局
- hwnd = FindWindow(vbNullString, "空当接龙")
- hwnd1 = FindWindowEx(hwnd, 0, "Static", vbNullString) 'win7系统获取打牌窗口
-
- PostMessage hwnd, WM_KEYDOWN, vbKey8, 0 '
- Sleep 100 '
- PostMessage hwnd, WM_KEYUP, vbKey8, 0 '
- Sleep 100 '
-
- PostMessage hwnd, WM_KEYDOWN, vbKey3, 0 '
- Sleep 100 '
- PostMessage hwnd, WM_KEYUP, vbKey3, 0 '
- Sleep 100 '
- '8-----3
- '-------------------------------
- PostMessage hwnd, WM_KEYDOWN, vbKey8, 0
- Sleep 100 '
- PostMessage hwnd, WM_KEYUP, vbKey8, 0
- Sleep 100 '
-
- PostMessage hwnd, WM_KEYDOWN, vbKey0, 0
- Sleep 100 '
- PostMessage hwnd, WM_KEYUP, vbKey0, 0
- Sleep 100 '
- '8-----0
- '--------------------------------------
- PostMessage hwnd, WM_KEYDOWN, vbKey8, 0
- Sleep 200 '
- PostMessage hwnd, WM_KEYUP, vbKey8, 0
- Sleep 200 '
-
- PostMessage hwnd, WM_KEYDOWN, vbKey3, 0
- Sleep 200 '
- PostMessage hwnd, WM_KEYUP, vbKey3, 0
- Sleep 200 '
- '8-----3
- '-----------------------------
-
- PostMessage hwnd, WM_KEYDOWN, vbKey8, 0
- Sleep 200 '
- PostMessage hwnd, WM_KEYUP, vbKey8, 0
- Sleep 200 '
-
- PostMessage hwnd, WM_KEYDOWN, vbKey1, 0
- Sleep 200 '
- PostMessage hwnd, WM_KEYUP, vbKey1, 0
- Sleep 200 '
- '8-----1
- '-----------------------------
-
- PostMessage hwnd, WM_KEYDOWN, vbKey8, 0
- Sleep 200 '
- PostMessage hwnd, WM_KEYUP, vbKey8, 0
- Sleep 200 '
-
- PostMessage hwnd, WM_KEYDOWN, vbKey0, 0
- Sleep 200 '
- PostMessage hwnd, WM_KEYUP, vbKey0, 0
- Sleep 200 '
- '8-----0
- '-----------------------------
- End Sub
复制代码
麻烦楼主改成数组的,不然程序太长了。
改好了,希望能发表出来,学习下。 |