XiaoHui.net 笑汇程序员论坛首页
工作并快乐着,职业并休闲着
寻梦的岁月从不言辛苦几许,
不问收获几多……
» 游客:  申请新用户 | 登录 | 会员 | 统计 | 帮助 » XiaoHui.Net 笑汇程序员论坛 | 纯文字版 | 全站索引 | XiaoHui.com


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

RSS 订阅当前论坛  

上一主题 下一主题
     

标题: 如何实现“在桌面上通过双击打开文件”  
 
fank0202
小水手
Rank: 1



UID 2328
精华 0
积分 2
帖子 2
阅读权限 10
注册 2006-3-9
状态 离线
如何实现“在桌面上通过双击打开文件”

我们在使用Windows时,经常通过双击文件的图标来打开文件,请问在VB下怎样实现?
2006-3-14 14:32#1
查看资料  Blog  发短消息  顶部
 
漫步云端2006
小水手
Rank: 1



UID 2567
精华 0
积分 1
帖子 1
阅读权限 10
注册 2006-3-30
来自 呼和浩特
状态 离线
广泛搞活
2006-3-30 20:51#2
查看资料  Blog  发短消息  QQ  顶部
 
安羽
小水手
Rank: 1



UID 2194
精华 0
积分 13
帖子 13
阅读权限 10
注册 2006-2-28
状态 离线
双打开是系统的责任 只要在系统的注册表中写入对应的项及项值就可以了

目标都错了,还写什么写

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

楼主也别嫌我说话这么直
2006-4-20 17:54#3
查看资料  Blog  发短消息  顶部
 
farstaryao
小水手
Rank: 1



UID 24237
精华 0
积分 13
帖子 13
阅读权限 10
注册 2006-10-18
状态 离线
道德要与自定义的类型扩展名建立链接,再在系统启动时判断

下面是我自己写的一个扩展名链接程序,希望对你有用:
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


多多指教
2006-10-18 14:46#4
查看资料  Blog  发短消息  顶部
 
小马M5
小水手
Rank: 1



UID 18582
精华 0
积分 15
帖子 15
阅读权限 10
注册 2003-10-4
来自 四川南充
状态 离线
LZ是不是想在自己程序里实现双击图标打开文件?

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

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

OpenFile "d:\1.txt"

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

'*************************************************************************
'**模 块 名:ModOpenFile
'**说    明:紫水晶 版权所有2005 - 2006(C) http://www.m5home.com/
'**创 建 人:马大哈
'**日    期: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
2006-11-22 18:14#5
查看资料  访问主页  Blog  发短消息  顶部
 
matchcode
小水手
Rank: 1



UID 29679
精华 0
积分 1
帖子 1
阅读权限 10
注册 2007-2-12
状态 离线
up testing

[ 本帖最后由 matchcode 于 2007-2-12 11:12 编辑 ]
2007-2-12 11:11#6
查看资料  Blog  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题  


 


所有时间为 GMT+8, 现在时间是 2008-12-2 19:54 Powered by Discuz! 4.1.0 清除 Cookies - XiaoHui.Net 笑汇程序员论坛 - Archiver