vb.net注册组合热键,vb中热键怎么编程

求vb如何注册热键?

RegisterHotKey这个API可以实现。

创新互联是网站建设技术企业,为成都企业提供专业的成都网站制作、成都网站建设、外贸营销网站建设,网站设计,网站制作,网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制适合企业的网站。十载品质,值得信赖!

至于API声明,可以查查API大全。

Public Sub Hitjian()

Dim msgb As Msg

'注册Ctrl+E为热键

RegisterHotKey Main.hWnd, HBFFF, MOD_CONTROL, vbKeyE

Main.Show '显示Hot对象

HotKey_Flg = False

'循环检测

Do While Not HotKey_Flg

'等待消息

WaitMessage

'检测热键是否被按下

If PeekMessage(msgb, Main.hWnd, WM_HOTKEY, WM_HOTKEY, PM_REMOVE) Then

'这里可以填写事件

'Dim i As Long

'i = EnumWindows(AddressOf EnumWindowsProc, 0)

If JinJihuibiText "进行待机" Then

Shell JinJihuibiText, vbMaximizedFocus

Else

进行待机

End If

End If

'转让控制权,允许操作系统处理其他事件

DoEvents

Loop

End Sub

如何用VB.NET设置菜单项的热键

不清楚热键和快捷键是什么区别

1.如果你是指Chrl+S这样的快捷键,可以设置ShortCutKeys属性,属性窗口就有可视化编辑器。

2.如果你是指"保存(S)",其中s有下划线这样的用Alt+字母来访问的设置,应该在菜单项的Text属性中使用符号。符号后面的字母将被作为快速访问字符,显示的时候不会被显示出来,而字母会自动加上下划线。比如"保存(s)"。

3.和选中标记有关的属性有两个

CheckOnClick 在菜单项上单击时是否改变Checked属性

Checked 设置/获取 菜单项是否被选中

4.设置菜单项的Enabled属性为False

VB如何注册热键,详细点

新建一模块,输入下列内容

'-------------------------------------

'系统热键模块

'------------------------------------

Option Explicit

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

Private Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fskey_Modifiers As Long, ByVal vk As Long) As Long

Private Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long

Const WM_HOTKEY = H312

Const MOD_ALT = H1

Const MOD_CONTROL = H2

Const MOD_SHIFT = H4

Const GWL_WNDPROC = (-4) '窗口函数的地址

Dim key_preWinProc As Long '用来保存窗口信息

Dim key_Modifiers As Long, key_uVirtKey As Long, key_idHotKey As Long

Dim key_IsWinAddress As Boolean '是否取得窗口信息的判断

Function keyWndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

If Msg = WM_HOTKEY Then

Select Case wParam 'wParam 值就是 key_idHotKey

Case 1 '激活 3 个热键后,3 个热键所对应的操作,大家在其他的程序中,只要修改此处就可以了

MsgBox "aa"

Case 2

MsgBox "bb"

Case 3

MsgBox "cc"

End Select

End If

'将消息传送给指定的窗口

keyWndproc = CallWindowProc(key_preWinProc, hwnd, Msg, wParam, lParam)

End Function

Function SetHotkey(ByVal KeyId As Long, ByVal KeyAss0 As String, ByVal Action As String)

Dim KeyAss1 As Long

Dim KeyAss2 As String

Dim i As Long

i = InStr(1, KeyAss0, ",")

If i = 0 Then

KeyAss1 = Val(KeyAss0)

KeyAss2 = ""

Else

KeyAss1 = Right(KeyAss0, Len(KeyAss0) - i)

KeyAss2 = Left(KeyAss0, i - 1)

End If

key_idHotKey = 0

key_Modifiers = 0

key_uVirtKey = 0

If key_IsWinAddress = False Then '判断是否需要取得窗口信息,如果重复取得,再最后恢复窗口时,将会造成程序死掉

'记录原来的window程序地址

key_preWinProc = GetWindowLong(Form1.hwnd, GWL_WNDPROC)

'用自定义程序代替原来的window程序

SetWindowLong Form1.hwnd, GWL_WNDPROC, AddressOf keyWndproc

End If

key_idHotKey = KeyId

Select Case Action

Case "Add"

If KeyAss2 = "Ctrl" Then key_Modifiers = MOD_CONTROL

If KeyAss2 = "Alt" Then key_Modifiers = MOD_ALT

If KeyAss2 = "Shift" Then key_Modifiers = MOD_SHIFT

If KeyAss2 = "Ctrl+Alt" Then key_Modifiers = MOD_CONTROL + MOD_ALT

If KeyAss2 = "Ctrl+Shift" Then key_Modifiers = MOD_CONTROL + MOD_SHIFT

If KeyAss2 = "Ctrl+Alt+Shift" Then key_Modifiers = MOD_CONTROL + MOD_ALT + MOD_SHIFT

If KeyAss2 = "Shift+Alt" Then key_Modifiers = MOD_SHIFT + MOD_ALT

key_uVirtKey = Val(KeyAss1)

RegisterHotKey Form1.hwnd, key_idHotKey, key_Modifiers, key_uVirtKey '向窗口注册系统热键

key_IsWinAddress = True '不需要再取得窗口信息

Case "Del"

SetWindowLong Form1.hwnd, GWL_WNDPROC, key_preWinProc '恢复窗口信息

UnregisterHotKey Form1.hwnd, key_uVirtKey '取消系统热键

key_IsWinAddress = False '可以再次取得窗口信息

End Select

End Function

VB中如何设置热键和快捷键?

希望某一字符成为访问键,也可以在该字符前面加上一个 () 字符。

可以通过在 Caption 属性设置中使用 字符来为命令、菜单、和控件指定访问键。

单击按钮执行操作,在程序执行时,按 CommandButton 的快捷键(ALT + 带下划线的字母)是一种快捷键方法(见上图)。

access key(访问键),键盘上的字符,这些字符在菜单上或对话框中加有下划线或突出显示。同时按下 ALT 键和访问键可以激活菜单或对话框。有时候用来指代热键。

赋值访问键和快捷键:通过定义访问键和快捷键可改进键盘对菜单命令的访问。

访问键,访问键允许按下 ALT 键并打入一个指定字符来打开一个菜单。一旦菜单打开,通过按下所赋值的字符(访问键)可选取控件。例如,按下 ALT + E 键可打开“编辑”菜单,再按 P 键可选取“粘贴”菜单项。在菜单控件的标题中,一个指定的访问键表现为一个带下划线的字母,如图 6.9 所示。

图 6.9 访问键

要在菜单编辑器中给菜单控件赋值访问键,请按照以下步骤执行:

1.选取要赋值访问键的菜单项。

2.在其“标题”框中,在要作为访问键字符的前面直接键入一个 () 字符。

快捷键:

快捷键按下时会立刻运行一个菜单项。可以为频繁使用的菜单项指定一个快捷键,它提供一种键盘单步的访问方法,而不是按住 ALT 键、再按菜单标题访问字符,然后再按菜单项访问字符的三步方法。快捷键的赋值包括功能键与控制键的组合,如 CTRL + F1 键或CTRL + A 键。它们出现在菜单中相应菜单项的右边,如图 6.10 所示。

图 6.10 快捷健

要对菜单项赋值快捷键,请按照以下步骤执行:

1.打开“菜单编辑器”。

2.选取该菜单项。

3.在“快捷键”组合框中选取功能键或者键的组合。

要删除快捷键赋值,应选取列表顶部的 "(none)"。

怎么在VB中注册系统热键?

把下面的代码复制到窗体的代码里就行了,这里注册的是QQ的默认热键,你先运行这个程序,再运行QQ,就会把QQ的默认热键屏蔽掉了。

Private

Declare

Function

RegisterHotKey

Lib

"user32"

(ByVal

hWnd

As

Long,

ByVal

id

As

Long,

ByVal

fsModifiers

As

Long,

ByVal

vk

As

Long)

As

Long

Private

Declare

Function

UnregisterHotKey

Lib

"user32"

(ByVal

hWnd

As

Long,

ByVal

id

As

Long)

As

Long

Private

Const

MOD_ALT

=

H1

'Alt键

Private

Const

MOD_CONTROL

=

H2

'Ctrl键

Private

Const

MOD_SHIFT

=

H4

'Shift键

Private

Sub

Form_Load()

Dim

ret

As

Long

ret

=

RegisterHotKey(Me.hWnd,

1,

MOD_ALT

+

MOD_CONTROL,

vbKeyZ)

'注册热键Ctrl+Alt+Z

If

ret

=

Then

MsgBox

"注册热键失败,请使用其它热键!",

vbCritical,

"错误"

End

If

End

Sub

Private

Sub

Form_QueryUnload(Cancel

As

Integer,

UnloadMode

As

Integer)

Dim

ret

As

Long

Call

UnregisterHotKey(Me.hWnd,

vbKeyZ)

End

Sub

VB注册热键问题

检测热键是否按下,最好用PeekMessage函数。

注册热键时,最好把RegisterHotKey函数的第二个参数设为HBFFF以上的数。

程序结束时,应用UnregisterHotKey注销热键。

上面三条只是建议,不一定可以。


分享标题:vb.net注册组合热键,vb中热键怎么编程
网站链接:http://pwwzsj.com/article/hsigph.html