vb.net全局按钮 vb菜单控件

vb.net,怎么做全局快捷键??

'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

VB.Net搞的像这种申明,很多过程都要用到,写在哪里可以全局使用?很多按钮都要用到

自己在主程序下面创建一个新的cs文件,里面定义一个静态的全局变量,然后每次就存取就行了

public static ·······

vb.net 全局热键

见下面的代码

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


分享文章:vb.net全局按钮 vb菜单控件
分享路径:http://bzwzjz.com/article/hpphhd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 网站设计 企业网站设计 重庆电商网站建设 网站建设 网站制作 响应式网站建设 自适应网站建设 网站制作公司 成都网站设计 公司网站建设 成都网站建设 H5网站制作 成都网站设计 营销型网站建设 成都品牌网站设计 高端品牌网站建设 重庆手机网站建设 成都定制网站建设 企业网站建设 定制网站建设 成都响应式网站建设公司 成都网站建设