如何在程序里面执行快捷键ctrl+G

junjie_zhao_2001 2003-11-01 06:07:14
我在程序里面需要用到ctrl+G来激活一个操作,谢谢。
...全文
153 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
aha99 2003-11-02
  • 打赏
  • 举报
回复
注册系统热键
模块:
Option Explicit

Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
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
Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, ByVal id As Long) As Long

Public Const WM_HOTKEY = &H312
Public Const MOD_ALT = &H1
Public Const MOD_CONTROL = &H2
Public Const MOD_SHIFT = &H4
Public Const GWL_WNDPROC = (-4)
Public Const ShowHotKey = &H44EE
Public preWinProc As Long
Public Modifiers As Long, uVirtKey As Long

Private Type taLong
ll As Long
End Type
Private Type t2Int
lWord As Integer
hword As Integer
End Type
Public Function wndproc(ByVal hwnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = ShowHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hword = uVirtKey Then
'Debug.Print "HotKey Shift亅Alt亅G Pressed "
'你的操作,这里是显示窗体
Form1.Show
End If
End If
End If
wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)
End Function

窗体

Option Explicit
Sub Form_Load()
Dim ret As Long

preWinProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)

ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf wndproc)

Modifiers = MOD_ALT + MOD_SHIFT + MOD_CONTROL

uVirtKey = vbKeyG


ret = RegisterHotKey(Me.hwnd, ShowHotKey, Modifiers, uVirtKey)

Me.Hide
End Sub

Private Sub Form_Unload(Cancel As Integer)
Dim ret As Long
ret = SetWindowLong(Me.hwnd, GWL_WNDPROC, preWinProc)
Call UnregisterHotKey(Me.hwnd, ShowHotKey)
End Sub
junjie_zhao_2001 2003-11-02
  • 打赏
  • 举报
回复
我就是想把ctri+G这个组合键送给串口,如何来实现
put2001_ruan 2003-11-02
  • 打赏
  • 举报
回复
Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 7 Then
'这里就是你放的代码
End If
End Sub
但首先你必须把Form.keypreview=true这样就OK了。
建议你去搜索问题答案
feng1net 2003-11-02
  • 打赏
  • 举报
回复
SendKeys "^G"
这个代码应该添加在那??
junjie_zhao_2001 2003-11-02
  • 打赏
  • 举报
回复
我的情况是这样子的:我写了一个通过串口实现超级终端连接通信交换机的程序,我在超级终端里面需要用ctrl+G来激活交换机的人机接口程序,出现交换机的命令提示符,请问如何来实现这个ctrl+G的操作,谢谢,
goodname008 2003-11-02
  • 打赏
  • 举报
回复
' 按 Ctrl + G 启动记事本

Option Explicit

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If Shift = vbCtrlMask And KeyCode = 71 Then
Shell "notepad.exe", vbNormalFocus
End If
End Sub

Private Sub Form_Load()
Me.KeyPreview = True
End Sub
rainstormmaster 2003-11-01
  • 打赏
  • 举报
回复
SendKeys "^G"
berylw 2003-11-01
  • 打赏
  • 举报
回复
选择“工具”==“菜单编辑器”==添加主菜单"mnuaaa"==添加从菜单"mnubbb"==在从菜单mnubbb中选择"快捷键"==ctrl+G

完成
代码段
Private Sub mnubbb_Click()
MsgBox "ctrl+G" '提示ctrl+G
End Sub

87721054 2003-11-01
  • 打赏
  • 举报
回复
up
junjie_zhao_2001 2003-11-01
  • 打赏
  • 举报
回复
我的程序是在程序的执行过成中需要用ctrl+G来激活另一个程序,请问如何用程序来实现这个操作?
junjie_zhao_2001 2003-11-01
  • 打赏
  • 举报
回复
这是为什么啊,不帮助我着后进的人吗?
GetWindowPos 2003-11-01
  • 打赏
  • 举报
回复
这个问题太简单了所以没人回答你

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧