送分:关于调用外部程序!

loypen 2002-06-27 12:51:02
本人开发了一个小系统,其中要调用一个其他语言(Fortran)编写的计算程序.但一调用就出错,而试着调用notepad则“百发百中”。具体程序:
-------------------------------------------------------
taskId = Shell(App.Path & "\main.exe /file.txt", 1)
-------------------------------------------------------
...全文
69 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
dengwei007 2002-07-07
  • 打赏
  • 举报
回复
使用vba中的shell确实是有些问题的,我以前用它调用大型游戏都会有问题,
最好用
ShellExecute 0,"open","main.exe","\file.txt","main.exe所在目录",SW_SHOWNORMAL

VB声明
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

AWolfBoy 2002-07-07
  • 打赏
  • 举报
回复
從調用說是沒有問題的﹐我覺得的可能是你的main.exe程序的原因﹐
你應該從main.exe中找原因。
你的main.exe是不是什么條件識別之類的語句呢﹗
AWolfBoy 2002-07-07
  • 打赏
  • 举报
回复
從調用說是沒有問題的﹐我覺得的可能是你的main.exe程序的原因﹐
你應該從main.exe中找原因。
你的main.exe是不是什么條件識別之類的語句呢﹗
loypen 2002-07-07
  • 打赏
  • 举报
回复
对了,我是在win2k pro上运行的。
不知道为什么有时候能运行main.exe,有时又不行,请高手指点!

Dim taskId
taskId = Shell(App.Path & "\calcu.exe /file.txt",1)
loypen 2002-07-03
  • 打赏
  • 举报
回复
兄台所说的仍旧不能解决我的问题呀!
qbilbo 2002-06-30
  • 打赏
  • 举报
回复
如果不行再试一下:
taskId = Shell(App.Path & "\main.exe" & " " & """" & app.path & "\file.txt" & """", 1)
请确保程序所在目录不是根目录。


再给你一个用shell同步打开的例子吧,如果上面的方法还不行,你再试试这个。
Dim wshShell,rCode
set wshShell = CreateObject( "wscript.shell")
rCode = wshShell.Run ("C:\WINDOWS\CALC.EXE", 8, True)
qbilbo 2002-06-30
  • 打赏
  • 举报
回复
试一下
taskId = Shell(App.Path & "\main.exe " & """" & "/" & app.path & "\file.txt" & """", 1)
loypen 2002-06-29
  • 打赏
  • 举报
回复
谁能解决的话可以再加分!
loypen 2002-06-29
  • 打赏
  • 举报
回复
我的main.exe是没有错误的。只要我手动执行的话就能得到结果。
问题是我用shell调用是就不行,注意不是路径问题!

ShellExecute具体该怎么用?我以前用过,结果也是出现shell函数一样的错误。我不知道是不是我用错ShellExecute,但shell函数我真的很了解了,他无法完成我的任务。
hebeiheweiwei 2002-06-29
  • 打赏
  • 举报
回复
Shell 函数


执行一个可执行文件,返回一个 Variant (Double),如果成功的话,代表这个程序的任务 ID,若不成功,则会返回 0。

语法

Shell(pathname[,windowstyle])

Shell 函数的语法含有下面这些命名参数:

部分 描述
pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。
Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。


windowstyle 命名参数有以下这些值:

常量 值 描述
vbHide 0 窗口被隐藏,且焦点会移到隐式窗口。
VbNormalFocus 1 窗口具有焦点,且会还原到它原来的大小和位置。
VbMinimizedFocus 2 窗口会以一个具有焦点的图标来显示。
VbMaximizedFocus 3 窗口是一个具有焦点的最大化窗口。
VbNormalNoFocus 4 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。
VbMinimizedNoFocus 6 窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。


说明

如果 Shell 函数成功地执行了所要执行的文件,则它会返回程序的任务 ID。任务 ID 是一个唯一的数值,用来指明正在运行的程序。如果 Shell 函数不能打开命名的程序,则会产生错误。

注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句。
hebeiheweiwei 2002-06-29
  • 打赏
  • 举报
回复
ShellExecute

VB声明
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
说明
查找与指定文件关联在一起的程序的文件名
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hwnd Long,指定一个窗口的句柄,有时候,windows程序有必要在创建自己的主窗口前显示一个消息框
lpOperation String,指定字串“open”来打开lpFlie文档,或指定“Print”来打印它
lpFile String,想用关联程序打印或打开一个程序名或文件名
lpParameters String,如lpszFlie是可执行文件,则这个字串包含传递给执行程序的参数
lpDirectory String,想使用的完整路径
nShowCmd Long,定义了如何显示启动程序的常数值。
SW_HIDE 隐藏窗口,活动状态给令一个窗口
SW_MINIMIZE 最小化窗口,活动状态给令一个窗口
SW_RESTORE 用原来的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOW 用当前的大小和位置显示一个窗口,同时令其进入活动状态
SW_SHOWMAXIMIZED 最大化窗口,并将其激活
SW_SHOWMINIMIZED 最小化窗口,并将其激活
SW_SHOWMINNOACTIVE 最小化一个窗口,同时不改变活动窗口
SW_SHOWNA 用当前的大小和位置显示一个窗口,不改变活动窗口
SW_SHOWNOACTIVATE 用最近的大小和位置显示一个窗口,同时不改变活动窗口
SW_SHOWNORMAL 与SW_RESTORE相同
vica 2002-06-29
  • 打赏
  • 举报
回复
你确定MAIN没错?
loypen 2002-06-28
  • 打赏
  • 举报
回复
高手看过来!
高手看过来!
help me.
help me.
xxlroad 2002-06-27
  • 打赏
  • 举报
回复
请问:
你要达到什么效果??
loypen 2002-06-27
  • 打赏
  • 举报
回复
我检查过n次了,应该不是路径问题。
griefforyou 2002-06-27
  • 打赏
  • 举报
回复
如果程序放在根目录下App.Path的值为 C:\ D:\这样的

如果不是根目录下则为 C:\Windows D:\Winnt 这样的,没有\

loypen 2002-06-27
  • 打赏
  • 举报
回复
帮忙!!!
loypen 2002-06-27
  • 打赏
  • 举报
回复
我是用vb编写输入有限元计算的数据,然后调用fortran程序计算。
关键一步是在vb里调用该有限元程序时出错!!
网络咖啡 2002-06-27
  • 打赏
  • 举报
回复
学习
loypen 2002-06-27
  • 打赏
  • 举报
回复
参数应该不会有错,是不是要先给该外部程序申请一个进程?
据说vc可以产生进程,执行像我这样的外部程序就没问题。
有谁知道vb里怎么做吗?

cornerxu(面)困的话就明天再打扰了。
加载更多回复(7)

7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧