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

VB使用调用外部程序函数实现API函数高级功能

HTML文档下载 WORD文档下载 PDF文档下载
VB使用调用外部程序函数实现API函数高级功能
作者:曹首光
摘要 本文以Visual Basic 为例,介绍了在使用调用外部程序的办法实现以下五种功能的方法:1)关机和重新启动;2)使用缺省(默认)的程序打开文件或链接; 3)调用"资源管理器"; 4)复制和移动文件夹;5)把DOS程序的屏幕显示信息写入文件。
关键词 Visual Basic, Shell 函数,外部程序

调用调用API 函数可直接使用Windows 底层资源,因此功能强大。然而API函数使用较复杂,易出错。本文将以Visual Basic 6.0中的shell 函数为例,详细说明调用外部程序实现一些windows 高级功能的方法。
一、关机和重新启动Windows
在"开始-运行"对话框或DOS窗口中输入 rundll.exe user.exe,exitwindowsexec命令,Windows 就会重新启动;输入 rundll.exe user.exe,exitwindows,机器关闭。
所以您在Visual Basic 中使用下面两个命令来实现重起和关机:
Shell "rundll.exe user.exe,exitwindowsexec", vbHide '重新启动
Shell "rundll.exe user.exe,exitwindows", vbHide '关闭
二、使用缺省(默认)的程序打开文件或链接
在Windows的Command子目录中有一个Start.exe, 在这个命令后加上一个文件名参数,该文件即可用缺省程序打开。所以在Visual Basic 中可使用下面的代码:
Dim FiletoOpen$
FiletoOpen= "system.ini"
Shell "Start.exe " & FiletoOpen, vbHide
注意:1)如果变量FiletoOpen的值为包含长文件名的字符串,以上第三行应为
Shell "Start.exe " & Chr(34) & FiletoOpen & Chr(34) ' Chr(34) 为双引号。
这是因为当参数中的长文件名含有空格时,程序会认为空格以前的部分子符串为一个参数,所以会产生找不到文件的错误。例如要用Winword.exe 打开"C:\my documents\mydoc.doc" 时,如果在 "运行"对话框中输入start.exe c:\my documents\mydoc.doc, 系统寻找的文件是 c:\my 和 documents\mydoc.doc两个文件,所以会出错。正确的命令应当是start.exe "c:\my documents\mydoc.doc"
2)在上面第三行中,Start.exe 后别忘了留空格。
另外程序员也常常希望用户能点击软件上的链接而直接打开自己的主页或给自己写信。用下面的方法可以不另外添加控件而实现这种功能。
Dim url$,email$
url="nwdonkey.uhome.net"
email="mailto:nwdonkey@371.net"
shell "start.exe " & url, vbHide
shell "start.exe " & email, vbHide
三、调用"资源管理器"
用下面的命令可调用Windows资源管理器,并打开指定的文件夹:
Dim PathtoOpen$
PathtoOpen = "c:\my documents"
Shell "explorer.exe " & PathtoOpen, vbNormalFocus
四、复制和移动文件夹
是不是很怀念强大的DOS命令?其实所有的DOS外部命令所能实现的功能,您都能在VB中通过Shell函数来实现。比如您要把一个子目录的包含下一级目录的所有文件复制到另一个位置,可使用下面的代码:
If Dir$("c:\mydos", vbDirectory) = "" Then MkDir "c:\mydos" '在硬盘上新建一个c:\mydos的文件夹。
Shell "xcopy.exe c:\windows\command\*.* c:\mydos/s/e", vbHide
Shell "explorer.exe " & "c:\mydos", vbNormalFocus
同样我们也以用shell 来调用move.exe来实现来实现文件或文件夹的移动。
说明:此方法仅限于外部DOS命令,并需要把参数中的长文件名转换为8.3制文件名,转换似乎可以用API函数实现,我们自己编写了不调用API函数实现这一功能的函数,您如果需要请到http://go.163.com/
~nwdonkey/vb/ 去下载。
Contributor: NorthWest Donkey
五、把DOS程序的屏幕显示信息写入文件
Shell函数不支持DOS内部命令,要想在VB 中使用DOS内部命令,就得使用迂回的办法:先把DOS命令写到一个BAT文件中,然后再用Shell函数调用该BAT文件。如果您是编写DOS批处理的高手,则完全可以先编写好BAT文件,然后再用Shell 函数来调用。另外,大家还记得DOS命令中的管道命令符吧? 例如〈和〉号可以把一个文件的内容传递到另一个程序中去,也可把DOS应用程序的屏幕输出写到一个文件中去。例如用下列代码可把DOS命令copy的帮助信息写到一个文件中去。
Open "c:\test.bat" For Output As #1 '建立批处理文件
Print #1, "copy/?>c:\copyhelp.txt"
Print #1, "@exit"
Close #1
Shell "c:\test.bat", vbHide
Shell "start.exe c:\copyhelp.txt", vbHide
注意:'test.bat 中最后一句必须是@exit,不然经Shell调用后的批处理文件无法从内存中退出。
这种方法可以把dos 程序中显示在屏幕上的信息写入一个文件,因此对编写一些dos应用程序的windows 版本特别有用。
以上以Visual Basic 为例,讲述了巧用Shell函数实现一些一般不容易实现的功能的方法。一般情况下,其他编程语言也都提供了类似的函数接口,在这些编程环境下也可以轻易实现上述功能。对本文,您如有什么问题请寄信到 nwdonkey@371.net 或到我的主页http://nwdonkey.uhome.net/ 上留言。
河南省洛阳市解放军外国语学院第三系 曹首光
一周观察:Cloud Foundry生态圈渐成型 数据分析中的10个注意点,让你更了解用户体验、行为及需求 压不垮就奋行!Dropbox Datastore API给初创NimbusBase带来的启示 史上14大最具创新意义的科技发明 亚马逊应用商店:给应用开发者一个国际舞台 白帽黑客英年早逝:R.I.P,Barnaby Jack 苹果发布支持iTunes Radio服务的iTunes 11.1测试版 诺基亚将发布Treasure Tag配件 让你再也不怕丢东西 从三大互联网巨头布局,看移动时代的商业逻辑 亚马逊应用商店:一个开发者走向世界的机会? 企业级App探索:开发者们的正途在哪里? 如何有效地在海外市场推广产品? 网站转化率统计分析及优化方案 从资深设计师那我们能学到什么? 原作者使用Go开发memcached替代版,现已扎寨谷歌多个项目 像证券一样交易云资源,Zimory一年内收入翻两番并获德国证交所青睐 移动SDK崛起:未来会不会整合成一大坨? 关于 VS2010 异常捕获 在线编程教育平台Treehouse推免费iPad应用 微软发布Windows 8.1企业预览版 功能更强劲 如何管理和优化日益增长的代码复杂度? SDCC 2013大会讲师名单议题更新 8月1日前3.8折优惠截止 IBM Rational首席技术官:DevOps是一门哲学 Mozilla联手黑莓推进Web安全技术,推出开源测试平台Minion 苹果如何培养SOHO一族高效工作 再造Ruby:CryENGINE 3.5游戏引擎特性详解 Eclipse基金会涉足物联网,M2M标准是否已获东风? SDN部署前必须考虑的7个事项 【云先锋 40】初创公司DataStax:专注于Cassandra,三年融资8370万美元 内容创作工具的革新:Facebook前CTO推文字处理应用Quip 微软为Android手机推出Office 仅面向Office 365用户开放使用 我可否达到这个效果? ASP开发考勤后期处理程序! ): sql2000中如何判断一个表是否被修改过? 求救!!!!!! 500分求足彩“合成复式”算法,关键是速度要快(分不够可再加)!!! 有谁使用过tdi,网络编程? 如何破解InstallAnywhere??急请帮忙 PropertyGrid使用时必须结合实际的对象吗?可不可以不用selectObject,而直接对PropertyGrid进行控制? 请教各位:哪本书更适合我?(在线等待) 谁能看出乘法是如何实现的? 关于Socket问题,急啊!!! 500分求足彩“合成复式”算法,关键是速度要快(分不够可再加)!!! 以下代码出什么结果,请高手“预测”一下? 请各位朋友帮我看一看treeview的问题,在线等待 100分求解:员工考评系统! 老爸50岁生日,买什么礼物给他,-----本贴谢绝灌水------- upperbound(uo_1.tab_1.control[i].lv_1.item[])为什么incompatible property 我只是想用HashSet测试随机数的分布密度,请各位看看下面这个程序有什么问题?? 关于ORACLE中的一项配置问题!(100分) 请问pchar与string类型之间的转换问题 关于OSTREAM的疑问 何谓 FrontPage 服务器扩展? 用什么方法能够捕获乘法溢出错误??? 打印口的端口号是不是有个是378的?我下面的程序怎么不起作用呢,在线等待 各位高手,大家都来讨论一下手机上3D的开发? 500分求足彩“合成复式”算法,关键是速度要快(分不够可再加)!! 请问sql中的查询分析器如何使用??? 导入错误,麻烦大家帮我看看 把交叉表的横向合计,换成加权平均可以吗???? 网络编程问题 可否/如何达到这种效果? linux下如何使用dbassist 问一个比较菜的问题:如何彻底的删除Oracle? ReadSection&ReadSectionValues这两个用法有什么不一样? 做过OA的请进。UP有分 No4:500分求足彩“合成复式”算法,关键是速度要快(分不够可再加)!!! weblogic61 运行时的一个问题。 Microsoft Windows Media SDK 在VB使用问题? 有谁遇见这样的问题:上传问题,Malformed form data!在线等,50分 一个pointer的问题? 那位知道 神州泰岳软件股份有限公司 ,这个公司如何? 再次请教:为什么tracert www.sina.com.cn只得到一行输出?谢谢! 提一个小问题 各位仁兄帮个忙,关于如何进行dbgrid多重选择。 请高手指点!!!!!在线等 问一个简单的对话框问题。。。 装机小技巧 如何得到交叉表的横向加权平均数??? 格式如下? 在mhsflexgrid控件中加入一行(在线等候) 我如何得到屏幕的变化,请大侠指点! 关于定时器 中国前任刑部尚书是谁? 海参和鲍鱼的营养成分有那些 光在同种介质中是直线传播吗?光在生活中,在同种介质中是直线传播的.还有两条定理“光在同种介质中是直线传播”和“光沿空间传播”但是,在真空状态下,一旦空间发生扭曲,根据“光沿空 1,礼部尚书、刑部尚书,文部尚书这是什么朝代的官?2,还有没有什么尚书?3,这些尚书相当于现在的什么官? 初一下半学期 开学感受400字 光在同种______介质中沿直线传播 老师一手拿火柴盒,一手取一根火柴,将火柴擦亮,直至火柴燃烧完毕.然后……(问题不详细,看补充)老师一手拿火柴盒,一手取一根火柴,将火柴擦亮,直至火柴燃烧完毕.然后启发学生讨论:它 从结构上看,胎盘是母体的一部分还是胎儿的一部分?A 母体的一部分B 胎儿的一部分C 母体和胎儿共有D 全部是血管 高人进、作文好的进.求一篇200字的文章.开学的感受(是上初一)放假老师布置作业说写开学的感受,150字以上,200字以下.怎么写,文章可以不用太文绉绉,就像学生写的就行.非诚勿扰! 如何小学做好一个合格的班干部 刑部尚书放到现在,等于什么职位? 哪位可以帮我找一份陕西黄帝陵的英文介绍?公司有个英国人来华,要游西安,我实在没搜到黄帝陵的英文介绍,请有才的高手帮我一下, 求一道超简单计算题~计算:(-1)^2+(-1)^3+(-1)^4+.+(-1)^2011=?我觉得结果应该是-1,为什么正确答案是0?第一个和第二个相加的0,以此类推,可最后(-1)^2011=-10+(-1)=-1,并说明理由, 钨酸沉淀法测蛋白质含量人血白蛋白的蛋白质含量怎么测?钨酸沉淀法是不是就是凯氏定氮法? 铁矿石是怎样炼成铁的呢 一道超简单应用题甲乙各有20元乙给甲多少元?甲比乙多50%. 想做英语家教,用课本还是用新概念1?值得参考! 为什么说能量危机从某种意义上来说是熵的危机? 为什么有时星星看得见,有时会看不见?我住在宁波,老师要求我们进行星星观察,光污染和大气污染都不是很严重,几天前我还看见很多星星,昨天去观察只看见几颗星星了, 下面这个立体图形是属于柱体还是属于椎体? 哲学上的“熵”是什么意思?有什么意义? 怎样当好班委 鲍鱼为什么叫鲍鱼 熵是什么物质 如何解释“所有的知识都可以归结于自我的认知”?请结合实例与各种社会现象做出分析或者说,是应该从自我诠释世界?还是从世界诠释自我? 斯堪的纳维亚的峡湾形成原因 He is reading a newspaper now.He has lived here for 10 years.第一句的now 为什么可以省略 而第二句的for 10 years 则不能. Autocad快捷键CAD一共有多少快捷键? 斯堪的纳维亚半岛西海岸气候特征形成的主要原因 如何把汽车发动机改成发电机?买了一台汽油发电机后噪音太大.本人还有一闲置的夏利车.如何改成发电机呢?这样噪音也小了.不知道可行否? 各代的兵部尚书、兵部侍郎各有什么权限?可以唐朝、宋朝和明朝为例!比方说府兵的折冲都尉、校尉、旅帅、队正、火长是否都由皇帝任命? 火药爆炸炮弹未运动时,加速度为什么大?(我是自学者,讲的尽量明白些,)加速度不应该与速度差和时间有关么?看网上有说这与抛球到最顶点道理差不多,球到了最顶点的速度为0, 天黑请闭眼是什么意思啊 autoCAD快捷键有哪些?三维方面 炮弹在开始运动的瞬间,为什么 天黑请闭眼到底是什么意思?刚看的```朋友说他看完了`就是看不懂```我觉得挺有挑战性的`也就看了看```天啊``看完了` 还真是没琢磨明白``到底都是什么玩意啊?唯一能解释通的`就是每个人都 家庭电源跳闸家里的房子是2004年装修的,一直住得好好的,最近天气潮湿,墙壁“出汗”,房子很湿,昨天,电源跳闸,不知道什么原因?谁帮我出出主意?有六路线,一路线跳闸,而且拨掉了电器等也跳 开炮瞬间炮弹的加速度达1000m每秒,但速度为零,这是为什么? 用B超观察母体内的胎儿时,这对母亲和胎儿的健康有影响吗如题 宇宙现在处在什么状态 是爆炸中还是静止.还是收缩 为什么火箭发射瞬间速度为零加速度却很大,加速度的公式不是a=ΔV/Δt吗.ΔV此时却为零,Δt也为零 子宫内胎儿如何获得营养物质又如何排出代谢废物? 为什么家用电源铡刀开关最近总是跳闸? 挪威位于什么半岛 胎儿所需的营养和氧气是通过什么从母体获得的? 宇宙在爆炸还是在收缩? 我想问下和影片本身的关系,还有它的眼镜是怎么回事?普通片子可以通过换眼镜来看吗?还是和眼镜完全没有关系? 胎儿是靠自己的呼吸和消化系统从母体获得营养和氧气的吗是不 家用照明电路断路器不能跳闸原因家里电器总功率约有3000-4000瓦,火线接新买的断路器(DZ47-63-C32-4000A),零线没有接断路器,在家里试着将线路短路,结果断路器,没有跳闸,将电表的出线4平方铝 远红外线能穿过墙吗? 胎儿所获得的营养需经过( )由( )从母体获得 宇宙的爆炸和收缩是否循环 红外线是不是可以穿过水流 jake likes reading a newspaper--he is having breakfast A:while B:and C:because D:for 如何才能当好一个好班委?比如,在班上什么样的态度面对同学.和同学应该什么语气说话.等等. 明朝崇祯末年六部尚书的名单和重臣的名字最好是崇祯十年以后的朝中大臣.越多越好. Peter likes reading newspaper __________ he has his breakfast.A.when B.until C.duringPeter likes reading newspaper __________ he has his breakfast.A.when B.until C.during这道题要选A还是选C? 刑部尚书官有多大要标明各朝代 养殖海参和鲍鱼的许多问题.最近有想法养殖鲍鱼和海参.我是纯一点也不懂,想增长一下知识. He likes reading morning _____(newspaper) 尼日尔将为92名被困沙漠渴死移民进行外交部:中方将与上合组织各方一道进一亚太地区主要股市涨跌不一美媒:美国公布核弹更新计划 强化核威日本原子弹爆炸外籍幸存者要求安倍\"中方将与各方一道加大打击“三股势力”港媒:中央楼市思路初显 透露多点政策日本麦当劳就“禁流浪汉入店”道歉外交部就打击恐怖主义、叙利亚销毁化武世界主要城市11月2日天气预报英内政部报告称非法移民给英国带来沉重外交部:对目前阶段有关销毁叙化武决定律师称斯诺登可在俄境内就德国遭美监听报道称美通过澳驻华使馆监听中国 中方“免费”医疗让俄罗斯进退两难俄按揭购房方式未成功普及 专家称与银旧金山地方检察院举行反家暴妇女维权座澳大利亚赏鲸季来临 民众目睹2600日本学生12万粒杏仁膏立体再现法国印澳夫妇因非法改建房屋供学生住宿被罚3美国50州首富名单出笼 盖茨巴菲特仍史上最成功的女忧 苍井空这6部好电影中国企业跨国并购都在买什么 购买海外台湾一陆军上校性骚扰部属遭“监察院”国民党:电视台选前10天引用民调恐违驳水深火热说 马办:民进党“执政”时泰国大象公路上悠哉散步 致交通中断徐复观的治学观名校女生当外围女,当成典范回母校演讲学好这五招,简欧风格装修设计分分钟搞2015(成都)楼市总评榜发布,四川是什么让她们变得如此“年轻”?支付宝牵手央视春晚:一大波红包来袭!2016年加拿大食品行业新趋势培育多元农村电商市场 实现电商与农村深层解读‘熔断’,信息量略大,请谨慎这些情况不适宜母乳喂养,怎么回事?放这四大狠招方能救A股!董事长董秘双双失联 美邦服饰怎么了?2016年要怎么翻身?字字值千金,不【重磅】证监会:1月8日起暂停实施AA股熔断害苦分级基金:2只下折,还有
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘