快速调用“程序运行对话框” 一般情况下,当我们需要在VB程序中调用一个外部.exe或者.com程序时,一般要用到shell命令。它提供了一种非常简捷的方式让我们执行一个确定的外部程序。但缺点也显现出了,就是它不提供用户选择执行程序的功能。你也许还记得这样的经历:我们用鼠标点击桌面左小角的“开始”,在选择“运行”,这时,就出现了一个“运行”对话框: 你可以在这里直接输入要执行的程序全路径,或者,点击“浏览”按钮,选择一个程序。 要达到同样的效果,请使用下面的代码: '声明API函数 '引用了未公开的DLL文件shell32 Private Declare Function SHRunDialog Lib "shell32" _ Alias "#61" (ByVal hOwner As Long, ByVal UnknownP1 _ As Long, ByVal UnknownP2 As Long, ByVal szTitle _ As String, ByVal szPrompt As String, ByVal uFlags _ As Long) As Long '通用调用运行对话框过程 '参数Title表示对话框的标题,参数Description表示对话框中的描述文字 Public Sub ShowRunDialog(ByRef CallingForm As Form, _ Optional Title As String, _ Optional Description As String) If Title = "" Then Title = "Run" If Description = "" Then Description = _ "Type the name of a program to open, " & _ "then click OK when finished." SHRunDialog CallingForm.hWnd, 0, 0, _ Title, Description, 0 End '调用例程 Call ShowRunDialog(Me, "Run Dialog", "Choose a program and press OK")
keybd_event VB声明 Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) 说明 这个函数模拟了键盘行动 参数表 参数 类型及说明 bVk Byte,欲模拟的虚拟键码 bScan Byte,键的OEM扫描码 dwFlags Long,零;或设为下述两个标志之一 KEYEVENTF_EXTENDEDKEY 指出是一个扩展键,而且在前面冠以0xE0代码 KEYEVENTF_KEYUP 模拟松开一个键 dwExtraInfo Long,通常不用的一个值。api函数GetMessageExtraInfo可取得这个值。允许使用的值取决于特定的驱动程序 注解 这个函数支持屏幕捕获(截图)。在win95和nt4.0下这个函数的行为不同
楼上的:不用哪么麻烦的,有几个参数是专门调用这类键的! 一个API: keybd_event
万一你发送的键盘消息被其他进程捕获,哈哈,你就惨态了. 还是up jennyvenus的贴子.
'还是用钩子函数拦截键盘消息的好啊,愚见.Declare Function SetWindowsHookEx Lib "user32" Alias _ "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _ ByVal hmod As Long, ByVal dwThreadId As Long) As Long Declare Function UnhookWindowsHookEx Lib "user32" _ (ByVal hHook As Long) As Long Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
'还是用钩子函数拦截键盘消息的好啊,愚见.Declare Function SetWindowsHookEx Lib "user32" Alias _ "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _ ByVal hmod As Long, ByVal dwThreadId As Long) As Long Declare Function UnhookWindowsHookEx Lib "user32" _ (ByVal hHook As Long) As Long Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _ ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
我给你分!
一般情况下,当我们需要在VB程序中调用一个外部.exe或者.com程序时,一般要用到shell命令。它提供了一种非常简捷的方式让我们执行一个确定的外部程序。但缺点也显现出了,就是它不提供用户选择执行程序的功能。你也许还记得这样的经历:我们用鼠标点击桌面左小角的“开始”,在选择“运行”,这时,就出现了一个“运行”对话框:
你可以在这里直接输入要执行的程序全路径,或者,点击“浏览”按钮,选择一个程序。 要达到同样的效果,请使用下面的代码: '声明API函数 '引用了未公开的DLL文件shell32 Private Declare Function SHRunDialog Lib "shell32" _ Alias "#61" (ByVal hOwner As Long, ByVal UnknownP1 _ As Long, ByVal UnknownP2 As Long, ByVal szTitle _ As String, ByVal szPrompt As String, ByVal uFlags _ As Long) As Long '通用调用运行对话框过程 '参数Title表示对话框的标题,参数Description表示对话框中的描述文字 Public Sub ShowRunDialog(ByRef CallingForm As Form, _ Optional Title As String, _ Optional Description As String) If Title = "" Then Title = "Run" If Description = "" Then Description = _ "Type the name of a program to open, " & _ "then click OK when finished." SHRunDialog CallingForm.hWnd, 0, 0, _ Title, Description, 0 End '调用例程 Call ShowRunDialog(Me, "Run Dialog", "Choose a program and press OK")
<Win>+<R>
http://expert.csdn.net/Expert/topic/1326/1326069.xml?temp=2.259463E-02
对于keybd_event()的四个参数我不是很明白,想请问一下。还有用法
keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event('R', 0, 0 ,0);
keybd_event('R', 0, KEYEVENTF_KEYUP,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);
这段代码是打开运行,可是我不明白每一句的意思,为什么只执行第一句不能打开开始菜单!!!!
请教高手讲解一下!!
Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
说明
这个函数模拟了键盘行动
参数表
参数 类型及说明
bVk Byte,欲模拟的虚拟键码
bScan Byte,键的OEM扫描码
dwFlags Long,零;或设为下述两个标志之一
KEYEVENTF_EXTENDEDKEY 指出是一个扩展键,而且在前面冠以0xE0代码
KEYEVENTF_KEYUP 模拟松开一个键
dwExtraInfo Long,通常不用的一个值。api函数GetMessageExtraInfo可取得这个值。允许使用的值取决于特定的驱动程序
注解
这个函数支持屏幕捕获(截图)。在win95和nt4.0下这个函数的行为不同
一个API:
keybd_event
还是up jennyvenus的贴子.
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, _
ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookEx Lib "user32" _
(ByVal hHook As Long) As Long
Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, _
ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long