简单的说,比如我有个.rm的文件,双击以后,会由realone来打开这个文件进行播放,再比如,双击某个rar文件,系统会自动调用winrar打开他。这个功能如何在vb中实现呢?我在flashget中见过,下载下来的文件双击就可以调用默认的应用程序来启动它,请教一下该怎么做谢谢!
解决方案 »
- sendkeys为什么无效?
- 用visual basic 6.0 把mscomm控件加入到工程中的问题
- 有没有二进制转十进制及十进制转二进制的函数?
- phnd=openprocess(synchronize,0,pid)中的phnd和hwnd= FindWindow(vbnullstring, "算命先生")中的hwnd有什么不同?如何由phn得到hwnd??
- 用编译之后的文件运行一切正常, 但若是用代码直接运行,则提示Object required,怎么回事?
- 求助:VB6不能打开??
- 嘿嘿,我又升级了!二等猩猩~~~~~~~~散分!!!
- 有关msflexgrid的一个问题
- access安全性问题?
- 有谁能告诉我怎样做一个永远在最上的窗体?
- 如何做多面板处理
- 注册WINSOCK的问题?强烈关注
在使用资源管理器时, 双击一个未建立关联的文件, 就会出现一个 打开方式窗口。 而在程序中使用 ShellExecute 打开文件时, 如果没有关联程序, 也可以打开该窗口。
声明:
Declare Function GetDesktopWindow Lib "user32" () As Long
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
Declare Function GetSystemDirectory Lib _
"kernel32" Alias "GetSystemDirectoryA" _
(ByVal lpBuffer As String, ByVal nSize _
As Long) As Long
Private Const SE_ERR_NOASSOC = 31
函数:
Public Sub ShellDoc(strFile As String)
Dim lngRet As Long
Dim strDir As String
lngRet = ShellExecute(GetDesktopWindow, _
"open", strFile, _
vbNullString, vbNullString, vbNormalFocus)
If lngRet = SE_ERR_NOASSOC Then
' 没有关联的程序
strDir = Space(260)
lngRet = GetSystemDirectory(strDir, _
Len(strDir))
strDir = Left(strDir, lngRet)
' 显示打开方式窗口
Call ShellExecute(GetDesktopWindow, _
vbNullString, "RUNDLL32.EXE", _
"shell32.dll,OpenAs_RunDLL " & _
strFile, strDir, vbNormalFocus)
End If
End Sub
使用:
OpenDoc "c:\aa.log"
如:你要打开.gnf的
在ROOT 里面先建一个.gnf的,在默认里面写入: GnExe在建GnExe项。
在GnExe建一个自项:defaultIcon ; 里面的默认值填写你执行文件的图标,索引号
跟defaulticon同级目录下面见一个shell目录,在建一个子项open ,再在open下建一个command项,
在里面的默认里填写你的执行文件的路径。