赛迪网 > IT技术 编程语言 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

ShellExecute 的应用技巧

发布时间:2006.08.16 03:00     来源:plwww    作者:

以默认程序打开文档

要以与文件后缀名关联的程序打开文档,在Windows 9X和Windows NT下可以用ShellExcute函数方便地实现。这则小技巧展示了会有多方便—你只需要一个声明和一行代码!
开始一个新项目。在Form上放一个Command button,然后加入以下代码:
Private 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

Private Const SW_NORMAL=1 '(这些API常量可以用VB常量代替,比如vbNormalFocus)
Private Const SW_MAXIMIZE=3
Private Const SW_MINIMIZE=6
Private Const SW_SHOW = 5

Private Sub Command1_Click()
Dim lR As Long
Dim sFile As String
Dim iFile As Integer

' 创建一个测试用的文本文件
sFile = App.Path & "\SHELLTST.TXT"
On Error Resume Next
Kill sFile
On Error GoTo 0
iFile = FreeFile
Open sFile For Binary Access Write As #iFile
Put #iFile, , "这是一个测试文件,演示ShellExecute API函数。"
Close #iFile

' 依照文件名打开这个文本。Windows将会检查哪个可执行程序与.TXT关联
' (默认一般是Notepad),并运行程序打开文档
lR = ShellExecute(Me.hWnd, "Open", sFile, "", "", vbNormalFocus)
If (lR < 0) Or (lR > 32) Then
' 成功
Else
MsgBox "无法打开 '" & sFile & "'", vbInformation
End If
End Sub

当你点击command button,将会在项目所在目录创建一个文本文件,并用默认程序打开(一般是Notepad)。
===============================================

译者附:
本函数还可以用来连接到网页,照下面写就行了:
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"


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 把图片框的完整内容复制到剪贴板 (07-20) · 在运行时显示或隐藏窗体的标题栏 (05-12)
· 强制和防止窗口重画 (02-16) · 用VB编写抽奖程序 (06-14)
· VB中访问API函数之防错技巧 (09-27) · 判断一个文件是否在IE的缓存中 (02-11)
· 如何实现在TextBox中如何得知Caret所在位置 (10-27) · 针对 Microsoft Visual Basic 用户的 ASP+ 和 (10-21)
· 将你的Visual Basic 6.0移植到Visual Basic.N (04-25) · Windows未公开函数揭密——之一 (07-16)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管