VB调用exe文件和直接运行该exe文件结果不一样
答案:5 悬赏:0
解决时间 2021-03-24 16:53
- 提问者网友:低唤何为爱
- 2021-03-23 16:00
在D:\work文件夹下有一个1.exe程序,该exe运行时需要调用该目录下(D:\work)下面的arj.dat文件。直接运行该exe时正常。现在我用VB调用这个exe可执行文件。VB工程放在E:\VB目录下,调用语句为:shell "D:\work",1 运行VB后,虽然这个1.exe被执行了。但是出现了“arj.dat文件不存在”。请哪位高手指导一下
最佳答案
- 二级知识专家网友:陪衬角色
- 2021-03-23 16:08
结果不一样,主要原因应该是运行环境问题。
直接运行EXE文件时,程序会自动搜索当然目录下的资源文件(如:DLL文件,DAT文件)。
用VB调用EXE文件时,你查看一下,是否更改了EXE文件的位置和环境。
建议这样调用:
Private Sub Form_Load()
ShellExecute Me.hWnd, "Open", "D:\目录\1.exe", "", "D:\目录\", 1
End Sub
直接运行EXE文件时,程序会自动搜索当然目录下的资源文件(如:DLL文件,DAT文件)。
用VB调用EXE文件时,你查看一下,是否更改了EXE文件的位置和环境。
建议这样调用:
Private Sub Form_Load()
ShellExecute Me.hWnd, "Open", "D:\目录\1.exe", "", "D:\目录\", 1
End Sub
全部回答
- 1楼网友:野性且迷人
- 2021-03-23 21:29
程序运行时,有个 workingdirectory 的概念。
你的form调用别的exe时,如果exe和你的form程序,不在一个目录,那么,那个exe默认是认为你的目录是它的所在目录,这样的情况下,如果那个exe有配置文件需要读取的话,就读取不到了。
所以,在你调用那个exe时,指定好那个exe的workingdirectory为 该exe所在目录,即可解决问题。
- 2楼网友:猎杀温柔
- 2021-03-23 19:55
arj.dat放到vb工程目录下 或者 1.exe中用arj.dat的绝对路径
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 Long
Private Sub Form_Load()
ShellExecute Me.hWnd, "Open", "D:\work\1.exe", "", "D:\work\", 1
End Sub
- 3楼网友:魅世女王
- 2021-03-23 18:42
你的那个调用语句
应该是:
shell "D:\work\1.exe",1
没有指定文件名
如果不是这个问题的话,你试一下这段代码Public 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 Long
ShellExecute Me.hwnd, "open", "D:\work\1.exe", "", "", SW_SHOW
这是ShellExecute API函数,这个函数可以将任何文件打开
还不行的话,你+QQ304728539,把代码,源文件,相关文件发给我,我做好了再发给你
然后不明白的地方解释一下
- 4楼网友:一个很哇塞的汉子
- 2021-03-23 17:22
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 Long
Private Sub Form_Load()
ShellExecute Me.hWnd, "Open", "D:\work\1.exe", "", "D:\work\", 1
End Sub
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯