VB写了个1.exe,如何实现当打开任意一个文本文件时,自动运行1.exe? 如何实现二者的关联? 请教! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写注册表,把你的程序作为文本文档默认程序就可以了.以下摘自洪恩在线,原文地址: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 = TrueEnd SubPrivate Sub Form_Load()CmdPressed = FalseEnd 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 关于程序在别的电脑中安装出现的问题:数据绑定DLL,VB5DB.DLL不能加载,我该怎么调试? 给社会新人的建议和忠告。----经验、教训送给刚入社会和即将进入社会的学子们。 关于表格统计的问题 以我现在的水平找工作的话应该要多少Money比较合适 如何在SQL语句中实现类似VB的INSTR()的操作 错误处理 关于vsflexgrid的问题?在线等待 vb中有没有一个过程能捕捉到所有的事件 有没有办法不装Access就能让编译的程序对mdb数据库文件进行操作? vb连接excel,DataGrid显示数据问题 一个小问题,不知如何解决? EXCEL数据导入ACCESS问题??
' 利用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