尝试用SHELL来代替复杂的API

我们知道:

一、简单调用,关于代替WINEXEC

可以用WINEXEC这个API来调用一个可执行文件,这可以用VB的SHELL语句直接代替它,而且,这个SHELL语句会直接返回被调用程序的PID。例如:

PRINT SHELL("NOTEPAD.EXE")将会打开一个记事本,在窗体上输出被打开的记事本的PID,可以用任务管理器查看,得到的是相同的结果。

如果我们稍微把这个函数改一改:

PRINT SHELL("NOTEPAD.EXE c:/123.txt")如果c:/123.txt存在,将打开这个文件,不过不存在,将启动一个错误对话框和记事本,这是为什么呢?我们可查看注册表,发现有一个系统SHELL是这样定义的NOTEPAD.EXE %1,这也就是说,NOTEPAD.EXE是可以带有参数的,参数就是它可以打开的任何文件!

想到什么了?对,有些时候,我们需要获取被打开的文本文件等所对应程序的PID,这时返回的就是这个PID,怎么样,省去了很多麻烦的API吧。所以,结合系统SHELL来完成这样的工作是很好的选择。

二、复杂调用,关于代替ShellExecute

ShellExecute这个API在浏览器中的说明是查找一个关联程序,但实际上,它可以用来打开任何文件,如果没有相关联程序,那么将打开对话框来等待你设置一个用来打开的程序。

很方便不是吗,可是我们需要声明API,需要声明变量,使用的时候需要N多参数,尝试用SHELL代替它!

如下:

Shell "Rundll32.exe url.dll, FileProtocolHandler H:/游戏辅助工具/ra2五项属性修改器FOR1.06.rar", vbNormalFocus

在你使用的时候,修改H:/游戏辅助工具/ra2五项属性修改器FOR1.06.rar这段就可以了,无论你把这些改成调用什么程序,他都会成功调用的,和ShellExecute函数没有什么区别。

上面提到了SHELL语句返回值是PID,那么这个的返回值是什么呢?也是PID,查看我们的代码,可以发现url.dll, FileProtocolHandler H:/游戏辅助工具/ra2五项属性修改器FOR1.06.rar都是作为调用Rundll32.exe 时的参数,所以,这里返回值就是我们调用的Rundll32.exe的PID。

三、扩展调用,有关控制面板

这些,很多朋友已经熟悉了,在WINDOWS里面,有一种文件扩展名为CPL,它们是控制面板扩展,我们可以在 VB中用SHELL来调用它们!

在你的系统所在分区中查找*.CPL文件,然后用以下语句调用他们

SHELL "rundll32.exe shell32,Control_RunDLL *.CPL"

如果你只调用

SHELL "rundll32.exe shell32,Control_RunDLL" 那么将打开控制面板

而如果调用

SHELL "rundll32.exe shell32,Control_RunDLL desk.cpl"就将打开桌面属性

这里需要说明的是,如果你调用的这个控制面板项目具有多选项卡,那么,可以加入参数0、1、2、3、4分别代表各个选项卡

例如

SHELL "rundll32.exe shell32,Control_RunDLL appwiz.cpl,,1"将打开添加删除程序,里面的第一个:添加删除程序

SHELL "rundll32.exe shell32,Control_RunDLL appwiz.cpl,,2"将打开添加删除程序,里面的第二个:安装WINDOWS部件

其他的也可依此类推

 

这里补充一点,用SHELL 打开网页是是在已经打开的IE窗口中进行更改,如果想在新窗口,那么用以下代码:

shell "explorer bbs.csdn.net"即可,当然,也可以用这种方法打开一个文件夹.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清晨曦月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值