大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
新建一个Form1把Form1的KeyPreview改成True
创新互联建站主要从事网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务广宗,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
拖入一个Button1到Form1上面
然后加入以下代码
Private
Sub
Form1_KeyDown(sender
As
Object,
e
As
KeyEventArgs)
Handles
Me.KeyDown
If
e.KeyData
=
(Keys.Alt
Or
Keys.G)
Then
Button1.PerformClick()
'或者用Button1_Click(Nothing,
New
EventArgs)
'快捷键Alt+G触发Button1_Click()事件。
End
If
End
Sub
Private
Sub
Button1_Click(sender
As
Object,
e
As
EventArgs)
Handles
Button1.Click
Button1.Size
=
New
Size(180,
23)
Button1.Text
=
"我被局部快捷键给召唤了~"
End
Sub
'vb全局快捷键是个大大滴难题,不好整。以下是个演示,办法比较笨,本人自用的,你试试。
'窗体放上控件:Command1、Label1、Check1、Check2、Text1、Text2、Timer1
'加入以下代码,运行,设置"确定"键的快捷键
'可选"CTRL+某键"或者"SHIFT+某键"
'"某键"自己设置,只能设置为字母或数字
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer 'API声明
Dim i
'================================================================
'这部分是设置各控件的大小、位置和初始属性,为了便于演示才加的,
'你可以自行设计好各控件的大小、位置和初始属性,无需这些代码。
Private Sub Form_Load()
Form1.Width = 2690: Form1.Height = 2100
Command1.Width = 1215: Command1.Height = 495
Command1.Top = 120: Command1.Left = 120
Command1.Caption = "确定"
Label1.Width = 2175: Label1.Height = 255
Label1.Top = 720: Label1.Left = 120
Label1.Caption = "设置 确定 键的快捷键:"
Check1.Width = 975: Check1.Height = 255
Check1.Top = 960: Check1.Left = 120
Check1.Caption = "CTRL +"
Check2.Width = 975: Check2.Height = 255
Check2.Top = 1320: Check2.Left = 120
Check2.Caption = "SHIFT +"
Text1.Width = 255: Text1.Height = 270
Text1.Top = 960: Text1.Left = 1080
Text1.Text = ""
Text2.Width = 255: Text2.Height = 270
Text2.Top = 1320: Text2.Left = 1080
Text2.Text = ""
Timer1.Interval = 10 'Timer的属性,必须设置
End Sub
'以上部分是设置各控件的大小、位置和初始属性,为了便于演示才加的,
'你可以自行设计好各控件的大小、位置和初始属性,无需这些代码。
'================================================================
Private Sub Timer1_Timer()
If Text1 "" Then
If Len(Text1) 1 Then Text1 = Left(Text1, 1)
If Asc("a") = Asc(Text1) And Asc(Text1) = Asc("z") _
Then Text1 = Chr(Asc(Text1) - 32)
If Check1.Value = 1 And GetAsyncKeyState(vbKeyControl) 0 _
And GetAsyncKeyState(Asc(Text1)) 0 Then
i = i + 1
If i = 1 Then Call Command1_Click
Else
i = 0
End If
End If
If Text2 "" Then
If Len(Text2) 1 Then Text2 = Left(Text2, 1)
If Asc("a") = Asc(Text2) And Asc(Text2) = Asc("z") _
Then Text2 = Chr(Asc(Text2) - 32)
If Check2.Value = 1 And GetAsyncKeyState(vbKeyShift) 0 _
And GetAsyncKeyState(Asc(Text2)) 0 Then
i = i + 1
If i = 1 Then Call Command1_Click
Else
i = 0
End If
End If
End Sub
Private Sub Command1_Click()
print "你好"
SendKeys "你好"
End Sub
见下面的代码
Public Class Form1
Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'注册全局热键
RegisterHotKey(Handle, 0, 0, Keys.F4)
'第3个参数意义: 0=nothing 1 -alt 2-ctrl 3-ctrl+alt 4-shift 5-alt+shift 6-ctrl+shift 7-ctrl+shift+alt
End Sub
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
UnRegisterHotKey(Handle, 0)
End Sub
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = 786 Then
Me.Activate()
End If
MyBase.WndProc(m)
End Sub
End Class