找回密码
 加入
搜索
查看: 9643|回复: 29

如何选择使用ShellExecute及Run命令?

[复制链接]
发表于 2008-5-13 20:55:18 | 显示全部楼层 |阅读模式
本帖最后由 zjimmy 于 2009-7-26 13:11 编辑

ShellExecute:使用 ShellExecute API 执行一个外部程序。
Run:运行外部程序。
好像很多情形下两者都可以实现一些程序的执行,如何选择使用ShellExecute及Run命令?

我的意思是,当两者都可以实现同一程序的执行时,他们的区别在哪?

[ 本帖最后由 zjimmy 于 2008-5-13 22:06 编辑 ]
发表于 2008-5-13 21:31:59 | 显示全部楼层
你能对一个bmp位图run吗……
 楼主| 发表于 2008-5-13 22:06:21 | 显示全部楼层
我的意思是,当两者都可以实现同一程序的执行时,他们的区别在哪?
发表于 2008-5-14 01:36:52 | 显示全部楼层
run 楼主不是第一次问同一个问题了...
 楼主| 发表于 2008-5-14 08:02:27 | 显示全部楼层
原帖由 漠北雪~狼 于 2008-5-14 01:36 发表
run 楼主不是第一次问同一个问题了...

???
"run"你表达的是什么意思呢?run好?貌似什么都没有说到。。。
发表于 2008-5-22 21:07:50 | 显示全部楼层
貌似 Run 可以带所运行文件的参数,ShellExecute的不可以...
发表于 2008-5-22 21:47:39 | 显示全部楼层
原帖由 ollydbg 于 2008-5-22 21:07 发表
貌似 Run 可以带所运行文件的参数,ShellExecute的不可以...



错了。都支持参数的。。

当你不知道某种格式是调用什么运行的时候,就用ShellExecute。
发表于 2008-5-24 20:09:50 | 显示全部楼层
Run只能运行.exe的程序,而ShellExecute可以打开任意类型的文件。

比如ShellExecute("C:\txt.txt")可以用记事本打开"C:\txt.txt"文件,
而run("C:\txt.txt")是无法执行的。
发表于 2008-5-24 20:48:35 | 显示全部楼层
补楼上,应该是可执行文件吧,可不定是EXE啊,COM BAT VBS CMD等等都行吧

我这样理解的, 不知道合适不
ShellExecute把执行的问题交给WINDOWS,WINDOWS的工作方式是查扩展名的运行命令。。注册表里都有。。没有的对不起了不能调用合适的命令来执行
Run 的就直接可执行文件了。。只要 WINDOWS支持就直接运行之
发表于 2008-5-26 08:27:39 | 显示全部楼层
是啊,同样能用情况的区别在哪呢?
我认为用法的区别肯定是有的,楼上都说了,“两者都可以实现”那就是结(效)果没区别了。
那我的意思是:
结果没区别就不说区别了,就只说用法的区别

1、爱用谁就用谁,也就是以你的习惯来选用
2、重代码精简的,用run

换另一个意思来说:
你从A地到不远的B地,打个比方就500米
假如只有两种文式可以去,一种是徒步,一种是骑自行车,你说你选择哪个?
我认为,哪个都一样?
如果你喜欢散步,就徒步了,而你觉得累了,想在更短的时间达到,就选骑车
而无论是选择哪个,对于不能不能达到B地的结果(如同能不能执行程序的结果)是一样的,都到目的地了
发表于 2008-5-30 20:14:32 | 显示全部楼层
如果你去编一个类似“运行”的程序,会了解二者更多的不同。
发表于 2008-5-31 01:16:55 | 显示全部楼层
不知道是不是我理解有误shellexecute是要有运行环境的,run是直接运行,换句话说,有些程序在dos下不能运行,但在windows环境下就可以运行。而且,楼上的也说过了,比如像txt文件,用shellexecute的话,可以直接调用notepad.exe打开,而不用多写代码

[ 本帖最后由 netegg 于 2008-5-31 01:23 编辑 ]
发表于 2008-8-20 01:42:06 | 显示全部楼层
原帖由 llztt 于 2008-5-24 20:48 发表
补楼上,应该是可执行文件吧,可不定是EXE啊,COM BAT VBS CMD等等都行吧

我这样理解的, 不知道合适不
ShellExecute把执行的问题交给WINDOWS,WINDOWS的工作方式是查扩展名的运行命令。。注册表里都有。。没有的 ...

赞同这个理解,从2者的参数格式可以看出很明显的区别:
Run ( "文件名" [, "工作目录" [, 标志[, 标准_i/o_标志]]] )
文件名 可执行文件的完整路径(文件格式为 EXE、BAT、COM 或 PIF)。
这里的文件名必须指定可执行文件。

ShellExecute ( "文件名" [, "参数" [, "工作目录" [, "verb" [, 显示状态]]]] )
文件名 需要运行的文件名 (EXE, .txt, .lnk, 等等).
ShellExecute从字面上说就是“用命令解释器执行”,所以文件名参数可以是系统的shell可识别的任何文件类型。
我们指定一个文件,WIN系统就搜索命令解释器,找到对应的运行程序,打开指定的文件
发表于 2008-9-23 21:17:29 | 显示全部楼层
等你安装后缀名为.msi的安装软件的时候,你会发现用run命令怎么也run不出来,那就试一试shellexecute吧!!
发表于 2008-9-23 22:33:09 | 显示全部楼层
MSI用RUN也一样行的。只是语法不同罢了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 19:20 , Processed in 0.084798 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表