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

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函数的用法,然后熟悉注册表操作,就能灵活的写出与注册表相关的程序来。
iOS UIView动画实践(三):Transition Animation 【CTO讲堂】无社交,不App!——为App加载强大的通讯社交引擎 【探秘ES6】系列专栏(七):箭头函数 【前端框架】Backbone.js在大型单页面应用中的应用实践 【探秘ES6】系列专栏(六):解构赋值 《近匠》TestBird,专注的手游自动化云测试平台 【探秘ES6】系列专栏(八):JS的第七种基本类型Symbols 专访李林锋:我与Netty那些不得不说的事 手把手教学:巧用Core Data和RubyMotion开发iOS应用 《近匠》琥珀天气,精细化打磨征服Google Play 【CTO讲堂】人工智能到底能为我们带来什么? Linksys再度回归中国市场,主推智能路由 Windows 10:全平台战舰与移动化破冰——微软(中国)操作系统工程院院长谢育涛专访 专访友盟CEO叶谦:深挖海量终端用户数据的价值 七牛资深前端工程师马逸清:前端测试探索实践 实战iOS 9:开发者必须掌握的三种搜索API 腾讯Bugly干货分享:浅谈Swift在实际项目中的应用 【前端人生】ThoughtWorks黄峰达:利用横向扩展方式,快速学习前端新框架 这是前端最好的时代——论前端的“三化”建设 游戏引擎网络开发者的64做与不做(一):客户端方面 六问七牛CDN:打造融合CDN管理服务平台 《近匠》Wilddog野狗,跨平台的实时通信云服务 【CTO讲堂】招人不易留人更难——创业团队要闯哪些关? iOS UIView动画实践(四):过渡与伪3D动画 日程全公布|年度人工智能技术精英聚会 7月26-27相约北京 TypeScript 1.5发布,支持大量ES6新特性 快快快!27个提升效率的iOS开源库推荐 《近匠》Maxense,“云+传感”推动产业变革 【探秘ES6】系列专栏(九):使用Babel和Broccoli 2015年Postgres全球开发者大会参会总结 英特尔硬享公社启动“创意原型拍卖” 对接创意与商机 哪位大哥有vfw.pas的啊?60分相赠 ATL在中国的现状怎样,大家进来说说!!! 如何黑一个网吧~~~ 急:问个初级问题,希望能得到解决 这个论坛不错! 能不能让C盘只读不写啊? 为什么CopyMemory在NT下的效率与在98下的效率不同! cmos密码如何破解 database控件的问题????? 关于if 语句! 急急急...所以的程序一运行报错:This Example Program Can Only Be Run From With The IDE? 我的机器一运行该页面就慢 怎样设置FileListBox1的路径 free,delete ,Free()的区别? 初学网络,从何学起?如何过渡 请问生成EXE文件以后,要把PB下的哪些dll文件拷贝过去,全部都要吗??还是只要拷贝几个就可以,请问是哪几个? 如何实现自动编号(在线等待) 请问如何在使用insert into时同时使用select和values语句?(十万火急) 怎样改变ListView1在详细显示模式下表头的高度(调用小5号字体)? 我用的是TomCat,请大侠们帮我看看这段调用access数据库的jsp程序那里错了!每次都提示“From字句语法错误”! 如何对数据窗口中的内容进行批量修改?急!!!!! 全上海暂无业者,联合起来!!! 请问如何在使用insert into时同时使用select和values语句?(十万火急) 高分解答!!!谢谢!!!! 字符'\'在c++中当什么看 初学者的problem,讲一讲 一个菜问题 我的爱机是不是感冒了? 关于.NET的资源占用问题? 大侠们好!!!为什么我用DBEdit输入中文可是在DBGrid中显示的是“#”?? 请教Sybase高手3个问题 有关打印的问题,急! 关于响应键盘事件!!菜题送分急!看看我的记录,我一向是当天给分的!!只要题答好。 SetParaFormat的问题,烦死了。 同时登上"vc版"和"网络通信版"榜首,高兴散分 在delphi 中怎么判断Sql Server 表中的字段为计算字段,急等 问个在Delphi里关于Socket的问题,别嫌弱啊 求租!上海! 如何实现描点视图的剪切板传输问题(复制) 帮我看看这题怎么解,谢啦 大侠们好!!!为什么我用DBEdit输入中文可是在DBGrid中显示的是“#”?? 在VB中如何用程序在SQL SERVER中加入数据库 哪儿有Programming Windows的配套光盘代码下载? 悬赏解密SQLANYWHERE 的DB文件 !!请问如何利用ADO做三层设计?! 什么原因能导致能够编译通过的程序:unable to create process呢? 如何保存整个 ctreeview 的信息 高分求教?如何将一个图片做成带立体边缘效果? !!请问如何利用ADO做三层设计? 当一个女人和一个男人发生了性关系后哪个应该付更多的则任 一个比较高级的问题 在口袋里放红、黄两种铅笔.任意摸一支,要符合下面的要求,分别应该怎样放.摸到黄铅笔的可能性是1/5,可以这样放?有不同的放法吗 在一块铁件上镀铜后,铁件的质量加了1.068kg,求所镀铜的体积 关于 ENVI 和 erdas,先用basic tools中的band math命令计算得到R4/R3的影像图,再用compute statistics命令统计得到平均值M 及标准方差D,最后用region of interest中的band ofthreshold to ROI命令对污染水体实现分 写出和以下诗句含相同道理或意境的成语1欲穷千里目,更上一层楼2谦虚使人进步,骄傲使人落后3读书破万卷,下笔如有神回答满意的可追加分‘、50---100急. 我也是学地理的.想请问下,遥感影像分类除了监督和非监督法还有什么方法吗?用erdas怎么操作? 电源的输出功率公式 指景色富有诗、画的意境.的成语有哪些? 重核裂变 轻核聚变会不会有质量变化?怎么变化? 输出功率的公式是什么? 形容心里不舒服,情绪低落的样子.是什么成语意思? 什么是重核裂变与轻核聚变? 补画俯视图 根据意思写词语:情绪低落,非常伤心. 开关电源最大输出功率是固定的吗开关比如一个5V 20A的开关电源,通过修改取样电阻的方法将电压升到10V后,最大输出电流是多少呢?是10A还是20A? 请你用下面这段话的描述写 一段话 遇到不愉快的事而情绪低落这个意思对应的词语是要注意准确,四字词 输入功率与额定功率区别 哪位广东或是香港的本地大哥大姐,帮我听听这一段话呗.然后写出来.这是《阿飞正传》里张国荣说的话,意思通过字幕大概都了解了,我想知道,他原话是怎么说的,如果用广东话把他说的这几句 人体的产热和散热是相等的,那么在发烧的情况下是什么情况? 急 请你将右图画面的意思分别用六个子表示出来,把这六个字组合在一起,又可以组成大家都喜欢的一个词,这是什么词? 1澳大利亚东北沿海是什么气候?及成因.和澳大利亚热带沙漠气候成因. 为什么人在发烧的时候产热量和散热量是相等的?发烧的时候体温不是上升么?可是为什么产热量会和散热量相等?顺便稍问一句,为什么进行了骨髓移植后血型会变?血型不是遗传基因控制的么? 51最小系统为什么用10千欧电阻10微法电容 轻核聚变什么意思? 人高烧不退的时候,体热的产热=散热 那体温上升的时候,产热和散热又是什么关系?比如说从37度升到39度这个过程,产热和散热的关系是什么 卤代烯烃用系统命名法,先考虑双建排号最小,还是先考虑卤素原子排号最小 怎样才能核聚变? 请你根据下列诗句的意思各写出一个相同道理或意境的成语)1,会当凌绝顶,一览众山小2,小娃撑小艇,偷采白莲回3,千磨万击还坚劲,任尔东西南北风4,春色满园关不住,一枝红杏出墙来5,草长莺 怎样镀铜,最好简单点, 急需一首古诗赏析!唐诗,宋词都可以 随便哪个啊,但不能太长! 人体在发烧时的产热和散热是怎么样变化的?代谢是怎么样变化的?ATP的分解? 往植物表面镀铜需要什么工艺呢? 求一首古诗的赏析,. 关于高中地理——气压带和风带气压带和风带真混乱.为什么亚欧大陆西部盛行西风却有地中海气候?还有,南半球的风向是怎样的?气压带是不是随着太阳直射点的移动而移动的?.怎样根据气压 为什么西北地区多内流河和湖泊?它们的特点是什么? 求九上人教版任意一首古诗的赏析与评价 名词解释--达达主义 西北地区最长的内流河是 赏析或评价下面诗词梅花不理冬,一笑为春风.残冬默无言,偷眼看花容.情意半酒盅,难尝情淡浓.五载惆怅事,飘飞烟雨中.半百往事空,岁月褪春红.何日至蓝桥,景色应朦胧.聚散苦匆匆,天涯难相逢 1.是不是全球都受气压带风带的影响?那为什么有的地方吹季风有的地方吹西风或信风?2.高压切低压是怎么回事? 有没有可控核聚变的?可控核聚变需要什么条件 开关电源输出功率与什么有关系 风带与气压带.不明白是怎么从图中看到所有的风向都是往左偏的. 基于ERDAS使用spot对TM影像进行几何校正 关于WKL中间支座的锚固长度请问若WKL有一个支座锚固在边柱上,另一个支座锚固在中柱上,采用梁锚柱的办法,该梁在中柱上的锚固是否也需向下1.7倍Lae?101上面说的端支座是否仅仅是指梁在边柱 高中地理所涉及的风带,气压带? 如何使用ERDAS对遥感图像进行几何纠正本人在谷歌地球上截取了一个区域的遥感图像,请问如何进行几何纠正,使其有与该区域矢量地形图相同的坐标系统.请不吝赐教! 有哪些常见的呢? 请把这句英文改成更漂亮的句子He may not be a talent smart enough to master knowledge fast.(master knowledge 好像很奇怪的用法.是么?如有更好意见请改之, 遥感图像几何校正时常常要做的基础工作,比较一下ERDAS Imaging 与 ENVI 在遥感图像几何校正中各有什么特点?谁优谁劣?是否有高下之分? 非纯电阻电路的电阻达到额定电压是不是也达到了额定功率 ____能感受内、外环境变化并产生神经冲动 什么是遥感影像的几何纠正和正射纠正在erdas中利用DEM对quickbird全色影像进行正射纠正的步骤是什么? ENVI和ERDAS哪个功能更强大?哪个用的最广泛? 形容句,要象小说那样句子优美,长些一:美女:1.冷酷无情,皮肤白,头发微发黄,高才生2.野蛮,热情,头发乌黑3.有智慧,没前两位漂亮4.可爱,活泼.二:帅哥:1.微笑如阳光一般,优雅,个子高,运动很好(象 镀铜铁是一种合金吗? 用envi提取遥感影像上水体、植被的步骤? 诗文、图画、思想或道理等方面而达到的高度、意境 是什么成语 西北地区多内流河,why?是地势高还是离海远? 怎样用Envi或ERDAS提取截取的tiff格式地图上的道路、河流、建筑、绿地呢?同上,提取出来的东西要能导入Arcgis哦~我是小白,没用过Envi和ERDAS,
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘