VB按键触发时钟事件

VB制作的程序,运行后按F1,F2,F3分别启动时钟控件timer1,timer2,timer3.我需要完整的代码,请发送至邮箱:kxjh2011@vip.qq.com分... VB制作的程序,运行后按F1,F2,F3分别启动时钟控件timer1,timer2,timer3.
我需要完整的代码,请发送至邮箱:kxjh2011@vip.qq.com
分可以再加!
请不要给我一个网址要我去看,在您发送邮箱之前麻烦您先帮忙测试下是否有用。
请不要回答的牛头不对马嘴,还有发布黄网的家伙请注意形象!
展开
 我来答
yyr88303
2012-08-10 · TA获得超过114个赞
知道小有建树答主
回答量:117
采纳率:0%
帮助的人:107万
展开全部
在窗口点击右键编辑菜单,在里面加入菜单后选择对应的快捷操作,然后在编辑器中选择你的菜单就可以了 。如果不是F1这些特殊键的话,可以使用
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 112 Then Timer1.Enabled = True
If KeyCode = 113 Then Timer2.Enabled = True
If KeyCode = 114 Then Timer3.Enabled = True
End Sub
追问
我是要在外部也可以运行的,在用其他程序时也要有用!
追答
用全局快捷键来操作
首先创建一个模块

Private Declare Function CallNextHookEx Lib "user32" _
(ByVal hHook As Long, _
ByVal nCode As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

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

Private Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long

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_KEYDOWN = &H100
Private Const WM_SYSKEYDOWN = &H104
Private Const WM_KEYUP = &H101
Private Const WM_SYSKEYUP = &H105

Private Const HC_ACTION = 0
Private Const WH_KEYBOARD_LL = 13
Private lngHook As Long
Public Function HotKey(ByVal nCode As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Dim p As PKBDLLHOOKSTRUCT
If nCode = HC_ACTION Then
Select Case wParam
Case WM_KEYDOWN, WM_SYSKEYDOWN
Call CopyMemory(p, ByVal lParam, Len(p))
If p.vkCode = vbKeyF1 Then '这里定义热键
form1.Timer1.Enabled = True
End If

End Select
End If
Call CallNextHookEx(WH_KEYBOARD_LL, nCode, wParam, lParam)
End Function

Public Sub HooK()
lngHook = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf HotKey, App.hInstance, 0)
End Sub

Public Sub UnHooK()
Call UnhookWindowsHookEx(lngHook)
End Sub

然后在窗体中编写代码

'窗体
Private Sub Form_Load()
HooK '注册热键
End Sub

Private Sub Form_Unload(Cancel As Integer)
UnHooK '取消热键
End Sub
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
红山人2008
2012-08-10 · TA获得超过4679个赞
知道大有可为答主
回答量:5699
采纳率:0%
帮助的人:3951万
展开全部
首先,要将窗体属性keypreview的值设置为true
然后在代码窗口用下面的代码
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 112 Then Timer1.Enabled = True
If KeyCode = 113 Then Timer2.Enabled = True
If KeyCode = 114 Then Timer3.Enabled = True
End Sub
追问
我是要在外部也可以运行的,在用其他程序时也要有用!

这个好像不行呀?请问有其他方法吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙慧月03
2012-08-10 · TA获得超过2157个赞
知道大有可为答主
回答量:2717
采纳率:100%
帮助的人:3632万
展开全部
只需添加4个timer
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub Form_Load()
Timer4.Interval = 1000
End Sub

Private Sub Timer4_Timer()
If GetAsyncKeyState(vbKeyF1) Then Timer1.Interval = 1000
If GetAsyncKeyState(vbKeyF2) Then Timer2.Interval = 1000
If GetAsyncKeyState(vbKeyF3) Then Timer3.Interval = 1000
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式