VB调用exe文件和直接运行该exe文件结果不一样

在D:\work文件夹下有一个1.exe程序,该exe运行时需要调用该目录下(D:\work)下面的arj.dat文件。直接运行该exe时正常。现在我用VB调用这个exe... 在D:\work文件夹下有一个1.exe程序,该exe运行时需要调用该目录下(D:\work)下面的arj.dat文件。直接运行该exe时正常。现在我用VB调用这个exe可执行文件。VB工程放在E:\VB目录下,调用语句为:shell "D:\work",1 运行VB后,虽然这个1.exe被执行了。但是出现了“arj.dat文件不存在”。请哪位高手指导一下
谢谢icp9的回答。问题是1.exe是用Fortran编写的,别人提供的,用于载荷提取。我不能随便修改1.exe程序。还有arj.dat我不想放到VB目录下。这样会占用很大空间(ARJ.dat为2GB)。我发现用VB调用其他目录下的exe文件。这个exe是以VB工程所在的目录执行的。并不是在exe所在的目录。
展开
 我来答
tendgzf
推荐于2018-03-29 · 知道合伙人教育行家
tendgzf
知道合伙人教育行家
采纳数:336 获赞数:1145
从事气体安全系统工程方面近十年,对气体安全方面有一定期了解,在国内安全类杂志上发表多篇论文。

向TA提问 私信TA
展开全部
结果不一样,主要原因应该是运行环境问题。
直接运行EXE文件时,程序会自动搜索当然目录下的资源文件(如:DLL文件,DAT文件)。
用VB调用EXE文件时,你查看一下,是否更改了EXE文件的位置和环境。

建议这样调用:

Private Sub Form_Load()
ShellExecute Me.hWnd, "Open", "D:\目录\1.exe", "", "D:\目录\", 1
End Sub
304728539
2010-07-01 · TA获得超过302个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:168万
展开全部
你的那个调用语句
应该是:
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,把代码,源文件,相关文件发给我,我做好了再发给你
然后不明白的地方解释一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
icp9
2010-07-01
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
arj.dat放到vb工程目录下 或者 1.exe中用arj.dat的绝对路径
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
X战鸟
2010-07-01 · TA获得超过450个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:54.7万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
webyas
推荐于2016-06-08 · 超过19用户采纳过TA的回答
知道答主
回答量:98
采纳率:0%
帮助的人:39.7万
展开全部
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)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式