用VBA解决Windows空当接龙的617局-will.miao
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-窗体/数据页


用VBA解决Windows空当接龙的617局

发表时间:2017/6/30 8:17:39 评论(1) 浏览(5078)  评论 | 加入收藏 | 复制
   
摘 要:Windows的自带游戏空当接龙,其中第617局是比较难解的,需要尝试的次数比较多,而且经常忘记解法和步骤。
原本希望使用AutoIt或AutoHotkey、AAuto一类的工具,写一段自动化脚本快速解决这一局,但这些工具需要安装,而且容易被当做病毒。通过Office中的VBA调用Windows的API,对游戏窗口发送按键消息,可以快速演示解法。
正 文:

点击下载此附件


演   示:


代   码:


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



Access软件网交流QQ群(群号:198465573)
 
 相关文章
【Access示例】获取计算机从开机到目前所运行时间  【缪炜  2014/2/21】
类模块进度条(带运行时间,进度文本)  【lzk  2015/12/24】
进销存作业--在做采购订单新增时出现运行时错误'13':类型不匹配...  【杜超  2017/2/27】
【Access快速开发平台】运行时错误‘-2147467259(8...  【杨雪  2017/3/1】
常见问答
技术分类
相关资源
文章搜索
关于作者

will.miao

文章分类

文章存档

友情链接