VB中Shell和ShellExecute函数的使用方法和区别

来源:互联网 发布:迅雷快传mac版 编辑:程序博客网 时间:2024/05/01 21:03

 写了一个vb的程序,用来把原来写的几个vb和vc的程序整合起来。就是使用Shell函数。结果发现,vc的程序可以很好的显示,但vb写的却一运行就最小化了。仔细查看了一下以下文章,才发现原来shell函数的默认显示模式是windowstyle是等于vbMinimizedFocus。然后就是直接加上一个vbNormalFocus。一切ok!  

vb的shell函数用法: 

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

语法:Shell(pathname[,windowstyle]) 

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

pathname 必要参数。Variant (String),要执行的程序名,以及任何必需的参数或命令行变量,可能还包括目录或文件夹,以及驱动器。 

Windowstyle 可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。 


shellExecute函数: 
     其用法较为复杂,但是功能更加强大。

     HINSTANCE ShellExecute(
      HWND hwnd,           '父窗口句柄
      LPCTSTR lpOperation,   '操作或打开方式 "edit","explore","open","find","print","NULL"
      LPCTSTR lpFile,         '文件名,前面可加路径
      LPCTSTR lpParameters,   '参数
      LPCTSTR lpDirectory,    '默认文件夹
      INT nShowCmd          '显示方式
);

ShellExecute的功能是运行一个外部程序 

(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等), 

并对外部程序有一定的控制。shell函数在这个方面先相对较弱, 

在大多数情况下ShellExecute是更多的被使用的,
 
 lR = ShellExecute(Me.hWnd, "Open", sFile, "", "", vbNormalFocus)
 If (lR < 0) Or (lR > 32) Then
   ' 成功
 Else
  MsgBox "无法打开 '" & sFile & "'", vbInformation
 End If

附:
  本函数还可以用来连接到网页,照下面写就行了:
ShellExecute 0&, vbNullString, "http://coolbasic.yeah.net", vbNullString, vbNullString, vbNormalFocus

  或者这样写来发送Email:
ShellExecute me.hwnd, "open", "mailto:vbcode@vbcode.com", vbNullString, vbNullString, SW_SHOW

另外有ShellExecute的替代用法,更加简单实用,不用API,一句Shell搞定!

连接到网页:
  Shell "rundll32.exe url.dll,FileProtocolHandler http://www.online.sh.cn"
打开文件:
  Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "SHELLTST.TXT"