Windows的自带游戏空当接龙,其中第617局是比较难解的,需要尝试的次数比较多,而且经常忘记解法和步骤。
原本希望使用AutoIt或AutoHotkey、AAuto一类的工具,写一段自动化脚本快速解决这一局,但这些工具需要安装,而且容易被当做病毒。通过Office中的VBA调用Windows的API,对游戏窗口发送按键消息,可以快速演示解法。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" ( ByVal lpClassName As String , ByVal lpWindowName As String ) As Long
Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" ( ByVal hwnd As Long , ByVal wMsg As Long , ByVal wParam As Long , ByVal lParam As Long ) As Long
Const WM_CHAR = &H102
Sub f()
s = "83 80 83 81 80 " & _
"20 27 72 " & _
"48 46 41 48 42 " & _
"89 48 70 74 78 07 40 27 " & _
"10 14 004 10 01 16 19 " & _
"20 002 42 21 20 " & _
"32 34 24 32 42 34 30 38 " & _
"58 53 63 57 56 50 " & _
"10 10 13 15 35 13 12 18"
h = FindWindow( "FreeWClass" , "空当接龙游戏 #617" )
For i = 1 To Len(s)
c = Mid(s, i, 1)
m = 0.1
If c >= "0" And c <= "9" Then
a = SendMessage(h, WM_CHAR, Asc(c), 0)
Else
m = 0.3
End If
m = m + Timer: Do While Timer < m: DoEvents: Loop
Next
End Sub
|