Board logo

标题: 如何用shell或者ShellExecute打开任意类型文件?? [打印本页]

作者: 只爱陌生人    时间: 2006-8-30 16:12     标题: 如何用shell或者ShellExecute打开任意类型文件??

在用filelist控件得到文件之后,用shell 函数可以直接打开.exe .com .bat 等文件,但是对于那些需要用特殊程序打开的文件,比如,.bmp .wmv 等,怎样直接打开???
        在网上看到如下的文章:
Rundll32.exe的用途:
  我们知道,用Shell语句只能调用可执行文件,即 exe、com、bat和pif文件,有时我们想要调用其他一 些系统功能该怎么办呢?此时,Windows提供的 Rundll32.exe可大显身手了。下面我们来认识一下这些用法,也许会给您带来一点惊喜。

1、要打开设置系统时间的控制面板文件 (Timedate.cpl),只需运行如下代码:
Shell "Rundll32.exe
Shell32.dll,Control_RunDLL Timedate.cpl"
至于打开其他控制面板文件,相信您一定能够举 一反三,尝试一下,换个文件名就成了。
2、要运行某一快捷方式(*.lnk)则可以用以下 代码:
She11 "Rundll32.exe url.dll, FileProtocolHandler X" (X代表要运行的文件,包括 路径,下同。
3、也可以这样写来打开ActiveMovie控制:
Shell "RUNDLL32.EXE amovie.ocx,Rundll",1
而用Shell "RUNDLL32.EXE amovie.ocx,Rundll /play X",1 将直接播放媒体文件。
(下略.......)
但是,我想用
Dim shellpath As String
    shellpath = IIf(Right(File1.Path, 1) = "\", File1.Path, File1.Path & "\")
        Shell "Rundll32.exe shimgvw.dll" & shellpath & File1.List(File1.ListIndex)
打开.bmp文件,结果既没有出现错误,也没有看到想找开的图片。不知是为什么??

如果用API ShellExecute是不是可以像在桌面双击一样的打开任意(已经作好文件关联的)文件????
作者: Nothing    时间: 2006-8-30 21:16

ShellExecute确实可以实现你所要的功能。
作者: FIREFOX2004    时间: 2006-9-17 22:08

ShellExecute也不是想象的那么完美吧
比如 比一个FLASH播放器 就一个EXE 没DLL 什么的,名字叫SAFlashPlayer.exe
现在想打开1.swf 好象就不可以!~~!~




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0