请教!

解决方案 »

  1.   

    写注册表,把你的程序作为文本文档默认程序就可以了.以下摘自洪恩在线,原文地址:http://www.hongen.com/pc/program/apitutor/api0009/api01.htm使用搜索引擎及关键字:http://www.google.com/search?q=VB%20%E6%96%87%E4%BB%B6%E5%85%B3%E8%81%94&hl=zh-CN&lr=&nxpt=20.4549157025353623444803'--------------------------------------
    '      利用WinApi函数实现文件关联
    '--------------------------------------
    '         洪恩在线 求知无限
    '--------------------------------------
    '程序说明:
    '例中利用两个API函数RegCreateKey和
    'RegSetValue修改注册表中的相应键值
    '实现某一类型文件.log同一个应用程序
    'notepad.exe的关联.
    '--------------------------------------
    '说明&作为数据类型的标示,而不是“与”运算符
    '&指Long长整型数据,其范围从 -2,147,483,648 到 2,147,483,647。Long 的类型声明字符为和号 (&)。'当关联按钮被按下时,读写注册表,完成 .log 文件和 记事本Notepad 的关联
    '如果你对注册表的结构和使用不熟悉的话,可以参看“电脑乐园”中的相关教程
    Private Sub Command1_Click()
           If CmdPressed = True Then Exit Sub
           
           Dim sKeyName As String       '键的名称
           Dim sKeyValue As String      '键值
           Dim ret&                     '返回错误信息的变量
           Dim lphKey&                  '此变量用来保存创建的键的句柄
           
           '实际效果是在注册表的HKEY_CLASSES_ROOT下创建MyApp目录
           sKeyName = "MyApp"           '*名为MyApp的键名
           sKeyValue = "Logfiles"       '*把键值设为"Logfiles"
           '在HKEY_CLASSES_ROOT中创建名为sKeyName的键,并返回句柄lphKey&
           ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
           '向句柄lphKey&所指的位置写入键值sKeyValue
           ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
           
           '在注册表的HKEY_CLASSES_ROOT下创建另外一个目录 .log
           sKeyName = ".log"            '*名为.log的键名
           sKeyValue = "MyApp"          '*把键值设为"MyApp"
           ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
           ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
           
           '为“MyApp”设置了一个命令行
           sKeyName = "MyApp"           '*名为MyApp的键名
           sKeyValue = "notepad.exe %1" '*把键值设为"notepad.exe %1",如果你知道DOS下的.Bat文件的语法的话,便知%1指的是要打开的文件
           '如果该键已经创建,则RegCreateKey那么函数会打开现有的项
           ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
           '下面一句的实际效果是在MyApp键下建立shell\open\command目录,并写入键值sKeyValue
           '说明:放在一个键的shell\open\command下的是打开某一类型文件的应用程序的名称
           ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)
           
           Command1.Caption = "关联已经创建"
           Command1.Enabled = False
           CmdPressed = True
    End SubPrivate Sub Form_Load()
    CmdPressed = False
    End Sub'以下是模块文件中的代码:
    Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&)
    '【VB声明】
    '  Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long'【说明】
    '  在指定的项下创建一个新项。如指定的项已经存在,那么函数会打开现有的项'【返回值】
    '  Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码'【参数表】
    '  hKey -----------  Long,要打开项的句柄,或者一个标准项名'  lpSubKey -------  String,欲创建的新子项。可同时创建多个项,只需用反斜杠将它们分隔开即可。例如level1\level2\newkey'  phkResult ------  Long,指定一个变量,用于装载新子项的句柄
    Declare Function RegSetValue& Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&)
    '【VB声明】
    '  Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long'【说明】
    '  设置指定项或子项的默认值'【返回值】
    '  Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码'【参数表】
    '  hKey -----------  Long,一个已打开项的句柄,或指定一个标准项名'  lpSubKey -------  String,欲对它的值进行设置的一个子项的名字。如指定vbNullString,表示设置hKey的默认值。如指定的子项不存在,则会创建它'  dwType ---------  Long,必须是REG_SZ'  lpData ---------  String,新值'  cbData ---------  Long,指定lpData的长度,不包括空中止字符
           Public Const ERROR_SUCCESS = 0&
           Public Const ERROR_BADDB = 1&
           Public Const ERROR_BADKEY = 2&
           Public Const ERROR_CANTOPEN = 3&
           Public Const ERROR_CANTREAD = 4&
           Public Const ERROR_CANTWRITE = 5&
           Public Const ERROR_OUTOFMEMORY = 6&
           Public Const ERROR_INVALID_PARAMETER = 7&
           Public Const ERROR_ACCESS_DENIED = 8&
           Global Const HKEY_CLASSES_ROOT = &H80000000
           Public Const MAX_PATH = 256&
           Public Const REG_SZ = 1