vb 如何向后台发送组合键ctrl+enter

不要弹出目标窗口,就直接在后台发送ctrl+enter... 不要弹出目标窗口,就直接在后台发送ctrl+enter 展开
 我来答
匿名用户
2013-06-18
展开全部
你说的是给程序发,还是程序给系统发?

这个是程序给系统发,不管是正在运行什么
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal Scan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Command1_Click()
Call keybd_event(vbKeyCapital, 0, 0, 0) '模拟按下 'vbKeyCapital=20
Call keybd_event(20, 0, &H2, 0) '模拟弹起键
End Sub

这个是给指定程序发
'API模拟鼠标键盘
'消息
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Const WM_KEYDOWN = &H100
Public Const WM_KEYUP = &H101
Private Const WM_LBUTTONDOWN = &H201
Private Const WM_LBUTTONUP = &H202

PostMessage hBtn, WM_KEYDOWN, vbKeyReturn, 0 '向目标句柄发送回车键
PostMessage hBtn, WM_KEYUP, vbKeyReturn, 0

不过发什么指令我这边是随便设的,你要发什么自己改一个发键代码就行了
你要发组合键,那个模拟键弹起要放在最后面,也就是
先模拟按下ctrl
再模拟按下enter
弹起ctrl
弹起enter
键码VB里面自己有,我忘记了,你看一下MSDN吧
匿名用户
推荐于2017-09-04
展开全部
首先,你必须获取到目标窗口的Hwnd,然后分二步:
'第一步,建立一个模块Module1.bas,复制下面代码到模块中,并保存
'===Module1.bas代码====
Option Explicit
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const WM_SETFOCUS = &H7
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2

Public Sub KeyDown(ByVal vKey As Long) '用keybd_event模拟按下键盘
keybd_event vKey, 0, KEYEVENTF_EXTENDEDKEY, 0
End Sub

Public Sub KeyUp(ByVal vKey As KeyCodeConstants) '用keybd_event模拟松开键盘
keybd_event vKey, 0, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End Sub

Public Function SendKeyToWnd(MainWnd As Long, vbkey, Shift) As Boolean
SetForegroundWindow MainWnd'把目标窗口置前
SendMessage MainWnd, WM_SETFOCUS, 0&, 0& '选中按钮
If Shift Then KeyDown Shift '复合键
KeyDown vbkey '普通键
Sleep 100
KeyUp vbkey
If Shift Then KeyUp Shift
End Function

'第二步,函数调用:在你的工程内添加文件,选择刚才保存的文件Module1.bas,然后在调用处输入以下代码即可。
SendKeyToWnd hwnd, vbKeyZ, vbKeyMenu ‘向hwnd对应的窗口发送ALT+Z命令
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-06-18
展开全部
如果那个程序是你自己开发的,可以用DDE 发命令过去,如果是别人开发的就须要使用API 发送模拟键盘信息,

若是本程序 就使用内部判断就行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式