XiaoHui.Net 笑汇程序员论坛Visual Basic 讨论区

   如何实现“在桌面上通过双击打开文件”


页: [1]

fank02022006-3-14 06:32
如何实现“在桌面上通过双击打开文件”

我们在使用Windows时,经常通过双击文件的图标来打开文件,请问在VB下怎样实现?


漫步云端20062006-3-30 12:51
广泛搞活

安羽2006-4-20 09:54
双打开是系统的责任 只要在系统的注册表中写入对应的项及项值就可以了

目标都错了,还写什么写

送楼主一句话:
多读以精思,甚读以明辨

楼主也别嫌我说话这么直

farstaryao2006-10-18 06:46
道德要与自定义的类型扩展名建立链接,再在系统启动时判断

下面是我自己写的一个扩展名链接程序,希望对你有用:
Public Function SetLinkType(ByRef sTypeName As String, ByRef sEXEName As String, ByRef sIconPath As String, Optional sNoteofType As String) As Long
    '设置sTypeName文件格式为sNoteofType的文件格式
    'sExeName为你的可执行文件的名称
    'sIconPath为你要用的显示图标路径
    Dim hKey As Long, PathName As String
    Dim NotepadDir As String, IconDir As String

    PathName = App.Path
    If Right(PathName, 1) <> "\" Then PathName = PathName & "\"
'    IconDir = PathName & "Cdrom01.ico,0"
    IconDir = sIconPath & ",0"
    PathName = PathName & sEXEName & ".exe %1"
   
    NotepadDir = String(MAX_PATH, Chr(0)) '添加“打印”
    GetWindowsDirectory NotepadDir, Len(NotepadDir)
    NotepadDir = Left(NotepadDir, InStr(NotepadDir, Chr(0)) - 1)
    If Right(NotepadDir, 1) <> "\" Then NotepadDir = NotepadDir & "\"
    NotepadDir = NotepadDir & "Notepad.EXE /p %1"

    hKey = HKEY_CLASSES_ROOT
    RegSetValue hKey, sTypeName, REG_SZ, "fslFile", 8
    RegSetValue hKey, "fslFile", REG_SZ, sEXEName & sNoteofType, 20
    RegSetValue hKey, "fslFile\shell", REG_SZ, "open", 5
    RegSetValue hKey, "fslFile\shell\open\command", REG_SZ, _
                PathName, LenB(StrConv(PathName, vbFromUnicode)) + 1
    RegSetValue hKey, "fslFile\shell\print\command", REG_SZ, _
                NotepadDir, LenB(StrConv(NotepadDir, vbFromUnicode)) + 1
    RegSetValue hKey, "fslFile\DefaultIcon", REG_SZ, _
                IconDir, LenB(StrConv(IconDir, vbFromUnicode)) + 1
    RegCloseKey hKey
End Function

Public Function GetLinkFileName() As String
     '取得双击文件而打开的文件名
     '如果返回值为空则没有双击文件或未成功
     '相反则返回双击启动的文件名
     '可在系统启动时调用该函数
     Dim barr() As Byte
     Dim iFN As Integer
     iFN = FreeFile
     Open Command For Input As #iFN
     barr = InputB(LOF(1), 1)
     GetLinkFileName = Trim(StrConv(barr, vbUnicode)) '取出列表文件中的各文件名
     Close #iFN
End Function

小马M52006-11-22 10:14
LZ是不是想在自己程序里实现双击图标打开文件?

这个好说,使用一个ListView控件,把你要运行的文件添加到里面,再在双击事件里判断索引值,从而取得文件名.

文件名取得后,就可以调用OpenFile函数打开文件了:

OpenFile "d:\1.txt"

以下是OpenFile函数代码,放在一个标准模块里就行了:

'*************************************************************************
'**模 块 名:ModOpenFile
'**说    明:紫水晶 版权所有2005 - 2006(C) [url]http://www.m5home.com/[/url]
'**创 建 人:马大哈
'**日    期:2005年04月29日
'**修 改 人:
'**日    期:
'**描    述:打开任意类型文件
'**版    本:V1.0
'*************************************************************************
Option Explicit

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

Public Function OpenFile(ByVal OpenName As String, Optional ByVal msgStyle As Long = vbNormalFocus)
    ShellExecute 0&, vbNullString, OpenName, vbNullString, vbNullString, msgStyle
End Function

matchcode2007-2-12 03:11
up testing

[[i] 本帖最后由 matchcode 于 2007-2-12 11:12 编辑 [/i]]


查看完整版本: 如何实现“在桌面上通过双击打开文件”