vb中的热键问题……

本人是菜鸟我想设计一个这样的软件:先在一个程序中按热键然后shell"xxx.exe"在xxx。exe中写:PrivateSubForm_Load()forq=1to10... 本人是菜鸟
我想设计一个这样的软件:
先在一个程序中按热键
然后shell "xxx.exe"
在xxx。exe中
写:
Private Sub Form_Load()
for q=1 to 10
shell “xxxx。exe”
next
end sub
就是这样 我想搞一个一按热键就开始或结束这个xxx。exe的程序
然后用xxx。exe不停把xxxx。exe弹出
弹10次

求助高手………………
我就是想知道如何设置热键去打开这个xxx。exe
热键设置为f4
展开
 我来答
百度网友a1e0354
2011-08-04 · TA获得超过341个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:81万
展开全部
使用系统钩子。下面这段代码能使你按下F4和F5时分别弹出提示。你可以修改模块里msgbox的那部分代码来使得按下F4和F5时能做其他事情(运行或结束你的xxx.exe),我在那里用注释做了说明。如果你想用其他热键,请修改模块的常量声明部分以及“p.vkCode = VK_F4”和“p.vkCode = VK_F5”两句,我也在那里做了说明。
窗体中输入:
Option Explicit
Private Sub Form_Load()
HooK
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnHooK
End Sub
新建一个模块,输入:
'模块
Option Explicit
'钩子类型:底层键盘钩子
'安装钩子的API
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
'松开钩子的API
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal nCode As Long, ByVal wParam As Long, lParam As Any) As Long
'卸载钩子的API
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
'复制内存数据的API
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Type PKBDLLHOOKSTRUCT
vkCode As Long
scanCode As Long
flags As Long
time As Long
dwExtraInfo As Long
End Type
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYUP = &H105
Private Const VK_F4 = &H73 '代表F4键的常量
Private Const VK_F5 = &H74 '代表F5键的常量
'如果想用其他热键,需要获得其十六进制代码,请访问http://baike.baidu.com/view/15482.htm查找其他键的ASCII,然后用系统自带的计算器将其转为十六进制,最后在前面加上“&H”即可。
Private Const HC_ACTION = 0
Private Const WH_KEYBOARD_LL = 13
Private lngHook As Long
'实现钩子功能
Public Sub LowLevelKeyboardProc(ByVal nCode As Long, ByVal wParam As Long, ByVal lParam As Long)
Dim blnNum As Integer
Dim p As PKBDLLHOOKSTRUCT
If nCode = HC_ACTION Then
Select Case wParam
Case WM_KEYUP, WM_SYSKEYUP '若检测到有键按下后弹起
Call CopyMemory(p, ByVal lParam, Len(p))
If p.vkCode = VK_F4 Then '若按的是F4则标记blnNum为1,按的是F5则标记为2,否则标记为0
blnNum = 1
ElseIf p.vkCode = VK_F5 Then
blnNum = 2
Else
blnNum = 0
End If
Case Else
End Select
End If
If blnNum = 1 Then '若按下了F4则执行代码
MsgBox "你按下了F4!"
'shell "xxx.exe"
ElseIf blnNum = 2 Then '若按下了F5则执行结束进程的代码
MsgBox "你按下了F5!"
'请在此补充结束xxx.exe的代码
Else '否则放过此键
Call CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)
End If
End Sub
Public Sub HooK() '一键安装钩子
lngHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf LowLevelKeyboardProc, App.hInstance, 0)
End Sub
Public Sub UnHooK() '一键卸载钩子
Call UnhookWindowsHookEx(lngHook)
End Sub
ef_ef
2011-08-04 · TA获得超过285个赞
知道小有建树答主
回答量:357
采纳率:0%
帮助的人:231万
展开全部
RegisterHotKey 这个是系统级热键,就是你的程序最小化都有效
如果只想程序有焦点时有效,就在窗体的keyDonw 事件里加代码就可以.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-08-04
展开全部
···
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式