+ -
当前位置:首页 → 问答吧 → 如何在程序中使用shell .exe后程序不出现假死状态(大约几秒)

如何在程序中使用shell .exe后程序不出现假死状态(大约几秒)

时间:2011-08-11

来源:互联网

在程序中有段代码用shell打开另一.exe程序,主程序会出现假死状态(5,6秒),不用多线程、多进程怎么解决,因为看到另外一个人就可以实现,主程序一直很畅通,请各位大神帮忙!!谢谢!

作者: hyy9371   发布时间: 2011-08-11

人呢?

作者: hyy9371   发布时间: 2011-08-11

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 函数之后的语句。

作者: chinaboyzyq   发布时间: 2011-08-11

加关键字doevents试试,或者用shell调一个批处理,批处理里执行exe程序

作者: asftrhgjhkjlkttttttt   发布时间: 2011-08-11

asftrhgjhkjlkttttttt(孤独剑):你好!我shell打开.exe后还有部分语句进行数据处理,再哪里加doevents呢? 主要是调用时程序好像定住了一样,虽然时间很短,但经常(由于是循环调用)这样的话看起来觉得程序很不流畅

作者: hyy9371   发布时间: 2011-08-11

引用 3 楼 asftrhgjhkjlkttttttt 的回复:
加关键字doevents试试,或者用shell调一个批处理,批处理里执行exe程序

Shell本身就是以异步方式执行的,出现这样的问题应该是exe的加载时间过长,因为Shell要等待返回Exe的ID,楼上建批处理的方式到值得一试。

作者: c_cyd2008   发布时间: 2011-08-11

猴哥:好!注意 缺省情况下,Shell 函数是以异步方式来执行其它程序的。也就是说,用 Shell 启动的程序可能还没有完成执行过程,就已经执行到 Shell 函数之后的语句,

  执行到 Shell 函数之后的语句:这个影响不到,因为调用的.exe是与主程序完全不相关的另一程序

作者: hyy9371   发布时间: 2011-08-11

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sleep(5000)

VB不支持多线程,支持多进程

作者: geniusflly   发布时间: 2011-08-11

热门下载

更多