API: Shell() or ShellExec()

解决方案 »

  1.   

    Public Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
      

  2.   

    执行一个可执行文件,返回一个 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 函数之后的语句。
    Shell 函数示例
    本示例使用 Shell 函数来完成一个用户指定的应用程序。' 将第二个参数值设成 1,可让该程序以正常大小的窗口完成,并且拥有焦点。
    Dim RetVal
    RetVal = Shell("C:\WINDOWS\CALC.EXE", 1)   ' 完成Calculator。
      

  3.   

    方法有两个:
    1.用VB自己的函数 SHELL
        Call Shell("C:\WINDOWS\NOTEPAD.EXE d:\temp\0827.txt", 1)
        这条语句的意思就是用目录C:\WINDOWS下的NOTEPAD.EXE 来打开
        d:\temp\0827.txt这个文件。缺点是不能保证这个NOTEPAD.EXE
        在任何机器上都存在,因此较好的做法是把NOTEPAD.EXE随同自己
        的程序一起发布,这样就能万无一失。
    2.用WINDOWS的函数 ShellExecute
        这不是VB自带的函数,所以必须在程序里对这函数进行声明。
        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, vbNullString, "d:\temp\0827.txt", 
        vbNullString, vbNullString, 1)
        这个函数并不关心文件被什么程序打开,如果WINDOWS中现在把.TXT的
        文件和NOTEPAD.EXE关联,那自动就会用NOTEPAD.EXE来打开这个文本文
        件,如果是和其他的文字处理程序关联的,就会用所关联的程序来打开
        这个文件。
        优点,比如当知道客户机器上一定安装了EXCEL这个软件,但并不知道
        客户把它安装到哪儿了,这时候用第一种方法就力不从心了,而用这条
        函数就显得极为方便。缺点,如果打开文件的格式和任何程序都没关联
        起来,这时系统就不知道该如何打开它了。  
      

  4.   

    Shell 是调用指定的可执行文件,只能执行Bat,Com.Exe.
    API函数ShellExecute  是用关联的文件打开某个文件,它可以打开任何已关联的文件,如Txt,Doc,还能打开网址.
      

  5.   

    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 LongDim b As Variant
        b = ShellExecute(Me.hWnd, vbNullString, "c:\windows\calc.exe", vbNullString, vbNullString, 1)
      

  6.   

    shell  "C:\aaa.exe"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 函数之后的语句。
      

  7.   

    另外,能不能介绍一本说API的书啊?我上次买了一本,怎么都看不下去,太难了!
      

  8.   

    买黄国荣写的VB API的书,由旗标出版
      

  9.   

    《Win32 API Programming》不错
      

  10.   

    d发呆呆说的不错 is 奥莱理出的!很好,虽然不全面,但是,有深度,可以让你举一反三!