zjimmy 发表于 2008-5-13 20:55:18

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

本帖最后由 zjimmy 于 2009-7-26 13:11 编辑

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

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

[ 本帖最后由 zjimmy 于 2008-5-13 22:06 编辑 ]

asdf 发表于 2008-5-13 21:31:59

你能对一个bmp位图run吗……

zjimmy 发表于 2008-5-13 22:06:21

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

漠北雪~狼 发表于 2008-5-14 01:36:52

run 楼主不是第一次问同一个问题了...

zjimmy 发表于 2008-5-14 08:02:27

原帖由 漠北雪~狼 于 2008-5-14 01:36 发表 http://www.autoitx.com/images/common/back.gif
run 楼主不是第一次问同一个问题了...
???
"run"你表达的是什么意思呢?run好?貌似什么都没有说到。。。

ollydbg 发表于 2008-5-22 21:07:50

貌似 Run 可以带所运行文件的参数,ShellExecute的不可以...

马甲 发表于 2008-5-22 21:47:39

原帖由 ollydbg 于 2008-5-22 21:07 发表 http://www.autoitx.com/images/common/back.gif
貌似 Run 可以带所运行文件的参数,ShellExecute的不可以...


错了。都支持参数的。。

当你不知道某种格式是调用什么运行的时候,就用ShellExecute。

zcbenz 发表于 2008-5-24 20:09:50

Run只能运行.exe的程序,而ShellExecute可以打开任意类型的文件。

比如ShellExecute("C:\txt.txt")可以用记事本打开"C:\txt.txt"文件,
而run("C:\txt.txt")是无法执行的。

llztt 发表于 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地的结果(如同能不能执行程序的结果)是一样的,都到目的地了

ollydbg 发表于 2008-5-30 20:14:32

如果你去编一个类似“运行”的程序,会了解二者更多的不同。

netegg 发表于 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 发表 http://www.autoitx.com/images/common/back.gif
补楼上,应该是可执行文件吧,可不定是EXE啊,COM BAT VBS CMD等等都行吧

我这样理解的, 不知道合适不
ShellExecute把执行的问题交给WINDOWS,WINDOWS的工作方式是查扩展名的运行命令。。注册表里都有。。没有的 ...
赞同这个理解,从2者的参数格式可以看出很明显的区别:
Run ( "文件名" [, "工作目录" [, 标志[, 标准_i/o_标志]]] )
文件名 可执行文件的完整路径(文件格式为 EXE、BAT、COM 或 PIF)。
这里的文件名必须指定可执行文件。

ShellExecute ( "文件名" [, "参数" [, "工作目录" [, "verb" [, 显示状态]]]] )
文件名 需要运行的文件名 (EXE, .txt, .lnk, 等等).
ShellExecute从字面上说就是“用命令解释器执行”,所以文件名参数可以是系统的shell可识别的任何文件类型。
我们指定一个文件,WIN系统就搜索命令解释器,找到对应的运行程序,打开指定的文件

genejiang 发表于 2008-9-23 21:17:29

等你安装后缀名为.msi的安装软件的时候,你会发现用run命令怎么也run不出来,那就试一试shellexecute吧!!

sanhen 发表于 2008-9-23 22:33:09

MSI用RUN也一样行的。只是语法不同罢了。
页: [1] 2
查看完整版本: 如何选择使用ShellExecute及Run命令?