马大哈 发表于 2006-9-6 13:24:09

[下载]改进的SHELL函数-------SuperShell

在网上找到的.

可以指定目标EXE的运行目录,进程优先级,启动方式(最大化最小化等),以及进程句柄(hProcess)和Pid等



也可以使用这个,一样能挂起执行,但还能做别的事:

Option Explicit
'*************************************************************************
'**模 块 名:ModShellEx
'**说    明:增强SHELL函数
'**创 建 人:马大哈
'**描    述:紫水晶工作室 http://www.m5home.com/
'**日    期:2007年4月24日
'**版    本:V1.0
'*************************************************************************
Private Declare Function GetProcessVersion Lib "kernel32" (ByVal ProcessId As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Function ShellEx(ByVal FileName As String, Optional ByVal WindowStyle As VbAppWinStyle = vbNormalFocus, Optional ByVal DelayTime As Long = -1) As Long
    '与SHELL函数一样的参数,不过是阻塞执行.(同步)
    'FileName - 目标文件名
    'WindowStyle - 程序运行时窗口的样式
    'DelayTime - 等待的时间,单位为ms
    '备注:
    '       DelayTime设置为-1时表示一直等待,直到目标程序运行结束
    Dim I As Long, J As Long
   
    I = Shell(FileName, WindowStyle)
    ShellEx = I
    Do
      If GetProcessVersion(I) = 0 Then Exit Do            '目标进程退出时跳出
      Sleep 10
      J = J + 1
      DoEvents
      If DelayTime <> -1 And J > DelayTime \ 10 Then Exit Do'非永远等待+等待时间达到时跳出
    Loop
   
End Function[此贴子已经被作者于2006-9-6 13:46:30编辑过]

马大哈 发表于 2008-10-27 00:18:20

<p>这个参数是工作目录,就是程序里的"当前目录".</p>
<p>&nbsp;</p>
<p>有些游戏启动时会在当前目录里找一些文件,如果没有正确设置这个参数,就会找不到.</p>

everyone 发表于 2008-11-4 15:25:36

<p>楼上的朋友一定没有做过启动游戏的程序....哈哈.</p>
<p>你试下用SHELL启动一个游戏,再设置游戏的优先级看看...用这个模块的确方便多了</p>

hongkvip 发表于 2008-12-8 18:29:24

的确很Super!

lunpan6 发表于 2008-12-13 07:05:36

我顶我顶...

楼主...

帮你顶~~


以下签名属个人原创~转载请转知我!呵呵...
************************************************************************
轮盘, 台湾轮盘, 皇家轮盘 俄罗斯轮盘 三代台湾轮盘

从来不发贴,这个一定要顶 www.668888.com顶!

everyone 发表于 2009-4-12 20:49:46

<p>不好用,它启动的程序无法访问网络。</p>
<p>老马能改进否?</p>

404022 发表于 2010-6-9 17:14:25

恳请老马改一下这个模块。
我用它启动《诛仙》这个网络游戏,结果。。。。。连不上服务器。。。。。

马大哈 发表于 2010-6-9 21:28:40

注意启动路径.

另外,也可以试一下我新加的那个模块.
页: [1]
查看完整版本: [下载]改进的SHELL函数-------SuperShell