TC官方合作论坛

 找回密码
 立即注册
查看: 805|回复: 3

[问题] 后台键盘不知道这能行吗??

[复制链接]
发表于 2013-9-15 13:38:41 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
Option Explicit
Private Declare Function PostMessage Lib "USER32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function MapVirtualKey Lib "USER32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Const WM_KEYDOWN = &H100
Private Const WM_KEYUP = &H101
Private Const WM_CHAR = &H102
'//构造扫描码
Private 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
Public Function PostKeyDown(wHandle As Long, KeyCode As Long) '//发送按键
     PostMessage wHandle, WM_KEYDOWN, KeyCode, MakeKeyLparam(KeyCode, WM_KEYDOWN) '按下某键
End Function
Public Function PostKeyUp(wHandle As Long, KeyCode As Long) '//发送按键
     PostMessage wHandle, WM_KEYUP, KeyCode, MakeKeyLparam(KeyCode, WM_KEYUP)    '释放某键
End Function

回复

使用道具 举报

发表于 2013-9-15 14:30:45 | 显示全部楼层
就是tc 窗口空间里的 提交按键 一个原理
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-15 16:48:38 | 显示全部楼层
TC虚拟了扫描码???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-15 16:55:00 | 显示全部楼层
回复 2楼jimye0526的帖子

TC虚拟了扫描码???
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-24 13:58 , Processed in 0.035483 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表