我在VB下需要调用某程序( 如:C:\example.exe )
本来,只需要在 button click 事件中调用
v = shell("C:\example.exe")
if v > 0 then
debug.print "执行成功"
end if 运行立即窗口那里打印了 "执行成功" 但是程序却没有出来然后我在 开始->运行那里键入 C:\example.exe 可以成功呼出程序
而在我运行 cmd
在cmd 里面键入
1 cd C:\
2 example.exe
却不可以呼出程序,请问这是为什么,在开始茶单->运行那里可以叫出Example.exe ,在cmd 下面叫不出
PS :这个程序具体是 ACDSee5.1 中的 FotoConvas2.exe
目标位置是 C:\Program Files\ACD Systems\FotoConvas\2.0\FotoConvas2.exe
本来,只需要在 button click 事件中调用
v = shell("C:\example.exe")
if v > 0 then
debug.print "执行成功"
end if 运行立即窗口那里打印了 "执行成功" 但是程序却没有出来然后我在 开始->运行那里键入 C:\example.exe 可以成功呼出程序
而在我运行 cmd
在cmd 里面键入
1 cd C:\
2 example.exe
却不可以呼出程序,请问这是为什么,在开始茶单->运行那里可以叫出Example.exe ,在cmd 下面叫不出
PS :这个程序具体是 ACDSee5.1 中的 FotoConvas2.exe
目标位置是 C:\Program Files\ACD Systems\FotoConvas\2.0\FotoConvas2.exe
运行cmd
输入c:回车
输入example回车
就能运行c:\example.exe
由于dos下把可执行文件作为过程调用,所以不加后缀.
v = shell("C:\example.exe",vbnormalfocus)
if v > 0 then
debug.print "执行成功"
end if
具体请百度,vb shell函数的用法.
cmd中如果只输入文件名称不带后缀这个是操作系统设计了的。默认会执行可执行文件,优先执行com文件,也就是目录下有example.com和example.exe,那么cmd中输入example执行的是example.com回楼主,既然你在cmd下执行了都不行,那么就不要怪vb了,估计是acd对启动目录有限制什么的。如果一定要模拟的话用下面这个方法。
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub Form_Load()
ShellExecute hwnd, "open", "C:\example.exe", vbNullString, App.Path, 1
End Sub