说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB建立文件关联 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
VB建立文件关联 -VB资料

 
文件关联是指打开一种类型的文件的默认方式,比如默认状态下文本文件txt是与记事本程序相关联的,我们双击文本文件,就能直接运行记事本程序来编辑它。文件的关联是通过注册表得以实现的,本例就是利用API函数RegCreateKey和RegSetValue来对注册表进行修改,从中可以看到这两个函数的用法。

  为了学习方便,提供的源码已经作了详细的中文注释,看看源码框中的代码:


(源程序下载)

  我们先来声明API函数,本例中用到的两个函数声明如下:
   Private Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&) As Long

   Private Declare Function RegSetValue& Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&) As Long

  RegCreateKey函数的作用是在注册表中指定的主键下创建一个新的主键,而如指定的键已经存在,那么函数会打开现有的主键,其中各个参数的意义如下表所示:

参数 意义
hKey Long,要打开键的句柄,或者一个标准键名。例如:HKEY_CLASSES_ROOT 是标准键名
lpSubKey String,欲创建的新子键。如创建多个键,需用反斜杠将它们分隔开。例如:level1\newkey
phkResult Long,指定一个变量,用于得到新子键的句柄,在设置键值时要用到它
返回值 Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码

  RegSetValue函数用于设置指定键或子键的默认值,它的各个参数的意义如下:

参数 意义
hKey Long,一个已打开键的句柄,可从上面phkResult得到,或是指定一个标准键名
lpSubKey String,要设置键值的一个子键的名字。如指定vbNullString,表示设置hKey的默认值。如指定的子键不存在,则会创建它
dwType Long,必须是REG_SZ
lpData String,新的键值
cbData Long,指定lpData的长度,不包括空中止字符
返回值 Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码

  下面我们看看怎样实现文件关联,步骤一:在在注册表的HKEY_CLASSES_ROOT下创建MyApp主键:
   ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)

  语句中sKeyName已经预先赋值为"MyApp",而函数执行完后lphKey&会返回新创建的主键的句柄,然后我们向句柄lphKey&所指的位置写入键值sKeyValue(已经赋值为"Logfiles")
   ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)

  如果这时查看注册表,会发现如下图所示的新主键和键值:



  步骤二:在注册表的HKEY_CLASSES_ROOT下创建另外一个主键,键名为“.log”,键值为“MyApp”,创建的方法与第一步相同,只不过键名和键值不同。建立此键值的作用是,把“.log”文件关联到“MyApp”主键所规定的内容,这时的注册表如下:



  第三步:我们为“MyApp”设置了一个命令行,也就是在主键MyApp下建立如下主键:



  实现的代码是:
   sKeyName = "MyApp"        '*名为MyApp的键名
   sKeyValue = "notepad.exe %1"   '*把键值设为"notepad.exe %1",%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)

  经过以上几个步骤,我们已经建立了“.log”文件和“记事本”程序的关联。总结前面的内容可以发现在VB中采用API对注册表操作的基本思路都是类似的,只要我们知道了两个API函数的用法,然后熟悉注册表操作,就能灵活的写出与注册表相关的程序来。
.NET技巧:用TcpClient类测试网络服务 在VB.NET中用AT命令发送手机短信(SMS) 修改 WordPress 的 Flash Video Player 插件,使视频播放器显示封面图 JQuery和CSS实现图片幻灯片显示 JQuery操作Ajax的基本方法 点评两个网站: SEO 做得好, 并不等于有访问量. jQuery右键菜单(Context Menu)插件 创建vpn服务器解决远程接入的问题 用JQuery插件轻松实现accordion折叠菜单 用VBA为EXCEL文件加个登录对话框 Android模拟器入门 Android GSM驱动模块详细分析 农行网上在线支付平台接口安装详解 Android开发中实现跨进程通讯的AIDL接口 用CSS样式展现可打印页面 Android搭建NDK开发环境 VC++、MFC最好的开源项目 Android中电话和短信服务的包分析 一位Android开发者的赚钱经历 让网页中的图片随屏幕滚动,并避免与文字重叠 Hello bat - DOS BAT批处理编程入门教程(一) 变量 - DOS BAT批处理编程入门教程(二) Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面 程序流程控制基础 - DOS BAT批处理编程入门教程(四) For循环语句详解 - DOS BAT批处理编程入门教程(五) Android编程之实现GPS定位 android编程实现仿iphone的tab效果 系统变量 - DOS BAT批处理编程入门教程(三) Android编程获取手机的IMEI Android开发中14个很有用的编程技巧 Android蓝牙栈bluez使用方法 用WiseInstall作安装程序,怎么让可执行程序自动识别专用的文件,即点击专用文件即可用对应执行程序打开 在POWERDESIGN中将数据库设计倒入WORD报表的中文乱码问题 访问数据库时遇到的问题 如何把Excel的图表另存为图形文件?? 紧急求救!!(关于调用exe的问题) 关于动态删除记录的问题,大侠指点!!! 请问如何把用户上传的文件(所有)都保存在sql里面? 在POWERDESIGN中将数据库设计倒入WORD报表的中文乱码问题 时间设置 年关已到,谁有工作总结的模扳,给小弟发一份。 今天女朋友回家,放分,终于可以自由几天了,头一次放分,只有这么多了 生气!我真的很生气!现在的人怎么都这样? to shibichen(务必请近来一下) 在VC中怎么写关于猫的AT命令的程序?最好又程序。分数不过另外给 问一个傻傻的问题 帮帮忙,我送什莫礼物给女朋友好呢? 如何将选择出的内容存入文本文件??? Delphi中数据库操作Filter的原理,他和SQL语句查询输出的结果有什么不同? 在EXCEL中如何实现分两上SHEET打印!? 帮帮忙,我送什莫礼物给女朋友好呢? 几个linux下典型的应用问题,,高手新手都请进 ;-) 有关IE的奇怪问题 困扰很久的问题了:conn.execute为什么有是不能执行? 请问当一个页面中某个frame包含的网页不断重复刷新的时候怎么不让IE下面的刷新条滚动? 为什么局域网内看不到网站,而在广域网内却可以看到网站! 哪位用过这个控件的3DES,SHA1算法?我调不出来,急~~~~~:( delphi中类似于On Error GoTo的语句是什么 采用缓存模式的Dataset如何一次性进行所有行的数据合法性校验? 运行程序时如何交换数据窗口中的两列的位置呢? 两个sql语句一样只有条件不一样,如何取并集? 无法设置DatabaseName是为什么? 那位高手能给出创建弹出窗口的比较完善的例子(最好经过测试)? 在目前共享软件怎样才能获取美元?除了有自己的产品外,在营销中那些条件是必备的? 我有oracle考单两张1000元/张有需求请email给我 在POWERDESIGN中做的数据库设计倒入SQL中,能否保留住NAME栏的中文注释? ASP与存储过程 请教: 请熟悉C#和COM+的朋友进来,保证散分 请问如何在对话框中加入工具条 关于打包的问题???急!急!急! 怎么清除mysql在2000 关于DNS的问题!那位大侠指点一二~~~ 这个sql如何写当A table 的field1的值符合一定条件时检索条件为一种情况,当field1的值为另一值时,检索条件为一种情况 初来宝地,散分! XML模糊查询 在POWERDESIGN中做的数据库设计倒入ORACLE中,能否保留住NAME栏的中文注释? 我有两张oracle考单1000元/张 程序员水平考试和资格考试有什么区别? 如何在 dataset (query或table)中新建一个可修改的字段? 关于ADO的 满足SQL条件,出现多条记录如何取值的问题?? 大哥,大姐,小弟小妹们快来帮帮忙啊 绍兴大学生转卖四六级试题 涉案8人中男子怀疑妻子和别人合谋害他 用菜刀将女子被微信上结识男子强奸 收家属钱变姑娘乘凉从3楼掉下 电线杆上挂了20桐乡一名洗碗工厨房受伤 老板为不赔钱上虞女子买房遭毁约 法院判决卖家违约男子暴打老婆被邻居猛揍 写保证书不打东京股市日经股指下跌0.53%研究称格陵兰冰原下存在一750公里长美国司法部称不反对个别州允许大麻合法巴西新外长就任 或仍将重视加强与南美日本免签证交流访问团赴日俄争议岛屿美媒称中国学生人数大增为美大学缓解财德媒建议德重新考虑全球角色 称全世界奥巴马与默克尔通电话磋商叙利亚局势(男子被坑20多万 老千集团分赃不均起杭州大伯吵架被咬伤 原是赌气斗嘴惹出男子带刀挟持保姆欲入室 警察搜寻未见少女身绑四块砖头水库轻生 不给一千万宁波儿童性侵案近7成受害人为外来人员修车工16万偷卖客户宝马X5“普莱斯有实力”空难生还者仍有望踢球难弟打难兄 一点不能松7人得分上双火箭赢背靠背华夏幸福再添鲁能元素?洛杉矶申奥不建新场馆4年后 重庆消除56人以上大班额去街头找“行走的图书” 万册图书免费不能动不出声 你会不会参与“假人挑战各地早餐全在这里,​重庆​除了小面,九州汽摩城加速发展 未来或成商贸物流网上卖老版人民币 发货后买家玩失踪除了身份证是500开头,还能拿什么证女儿吃自制阿胶膏流鼻血拉肚子 母亲:初三毕业适合出国留学吗?听听专家怎么红锦支路扩宽工程 明年开工鹅岭走失的两小孩 原是玩耍忘了回家街道门前新三包责任制 落实不好将诫勉渝中即日起至明年3月 整治朝天门市场两司机狭路相逢互不让 其中一人掏出砍iPhone 6s意外关机 苹果公司
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘