VB后台按键

VB如何实现后台按键(F4)发个完整的编码来,谢谢PrivateDeclareFunctionPostMessageLib"user32"Alias"PostMessag... VB如何实现后台按键 (F4)
发个完整的编码来,谢谢
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 FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long

Private Sub Timer1_Timer()
Dim hwnd As Long ' 储存 FindWindow 函数返回的句柄
hwnd = FindWindow(vbNullString, "YB_OnlineClient") ' 取得进程标识符
If hwnd = 0 Then
Label1.Caption = "未运行"

Else
Label1.Caption = "已运行"
Text1.Text = hwnd
PostMessage hwnd, WM_KEYDOWN, VK_F4, 0& '按下F4键
PostMessage hwnd, WM_UP, VK_F4, 0& '释放F4键
End If
End Sub
我的代码有什么毛病吗怎么后台运行还是不行游戏没反应
展开
 我来答
mislandeer
2009-11-24 · TA获得超过307个赞
知道小有建树答主
回答量:397
采纳率:0%
帮助的人:435万
展开全部
算了,发个完整的代码给你吧,自己改.记得常数要定义.
当然,PostMessage的最后一个参数用0也可以,下面是完整的.

窗体代码:
Private Sub Form_Load()
Dim hwnd As Long
hwnd = &HXXXX 'XXXXX表示记事本编辑框的句柄
PostMessage hwnd, WM_KEYDOWN, VK_A, MakeKeyLparam(VK_A, WM_KEYDOWN) '按下A键
PostMessage hwnd, WM_CHAR, Asc("A"), MakeKeyLparam(VK_A, WM_KEYDOWN) '输入字符A
PostMessage hwnd, WM_UP, VK_A, MakeKeyLparam(VK_A, WM_UP) '释放A键
End Sub
模块代码:
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
Public Const VK_A = &H41

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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
siyiqing
2009-11-24 · TA获得超过2169个赞
知道小有建树答主
回答量:930
采纳率:0%
帮助的人:907万
展开全部
常量声明了吗?timer1.enabeld=true
timer1.interval=100有吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
oldt888
2009-11-24 · TA获得超过2168个赞
知道小有建树答主
回答量:2191
采纳率:65%
帮助的人:724万
展开全部
SendKeys "{F4}"

这句足够了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
红衣老大之一
2009-11-24 · TA获得超过365个赞
知道小有建树答主
回答量:767
采纳率:0%
帮助的人:409万
展开全部
你说的后台 是 类似qq那种 c+a+z 吧

这东西要hook 用api写的

代码 可以自己搜索 不过一般都有小问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式