haijie1223 发表于 2011-9-9 22:47:51

run和ShellExecute的区别

本帖最后由 haijie1223 于 2011-9-9 22:50 编辑

今天看到蛋蛋的某个帖子的回复,一时感觉有兴趣就好好看了下帮助,觉得对两个命令有了更好的理解,在此分享一下,高手直接无视掉。
平常写代码的时候用run和ShellExecute感觉效果一样,没什么区别,这是因为运行的文件是可执行文件。
因为帮助中界定的很清楚:Run ;运行外部程序.
Run ( "程序" [, "工作目录" [, 显示标志[, 可选标志]]] )
;参数:程序 程序所在的完整路径(文件格式为 EXE,BAT,COM 或 PIF).

run的对象只可以是exe,bat,com,或pif。这个应该不是很全,因为cmd文件应该也可以的。
所以如果不是可执行文件的话,用run就无效了。
再看ShellExecute:使用 ShellExecute API 执行一个外部程序.
也就是说利用系统本身来运行文件,所以只要系统能认识的文件,就能打开,就和双击操作是一样的,不管什么文件,只要系统中双击能打开,那么ShellExecute就能打开。
假如系统不认识某个文件的话,那么用ShellExecute命令也会不认识,照样会跳出“打开方式”的对话框。
你可以用以下几个命令对比一下:
FileOpen("c:\1.txt",1)
run("c:\1.txt")
以上这个命令因为txt文件不是可执行文件,所以没有效果,打不开。
FileOpen("c:\1.txt",1)
shellExecute("c:\1.txt")
以上这个命令,因为系统一般都有记事本程序来打开txt文件,所以这个会有效果。能打开1.txt
FileOpen("c:\1.txt",1)
FileMove("c:\1.txt","c:\1",1)
ShellExecute("c:\1")
以上这个命令会跳出“打开方式”对话框,因为系统不认识没有扩展名的文件,除非你提前设定系统用什么程序来打开这类没有扩展名的文件。

我原来也只是乱用一气,今天总算了解一些用法,发表一下,供和我一样的小菜学习分享。
欢迎拍砖!

qqmmcc 发表于 2011-9-9 23:50:15

了解,谢谢分享

fuinei 发表于 2011-9-11 15:12:26

好贴子,谢谢分享!

autt 发表于 2011-9-12 11:30:09

run只能运行EXE, BAT, COM, 和PIF程序,而以别的后缀为名的可执行文件运行不了.
shellexecute可以执行所有可执行的程序,如txt,excel,word etc.exe.com....

楼下继续补充

chishingchan 发表于 2011-9-13 13:28:36

谢谢分享,合适菜鸟,我就是。

紫色风林 发表于 2011-9-13 14:18:21

谢谢,正适合我这样的菜鸟

ddlqd 发表于 2011-9-16 11:08:04

嗯。谢了。欢迎多发些类似的贴。

ddlqd 发表于 2011-9-16 11:12:49

作一个重要补充,如果不对请指正。
1:Run("winword.exe")
2:ShellExecute("winword.exe")
在上面中,1行脚本不会成功,因为run不会在当前路径中找到winword.exe。
          2行脚本会得到执行,ShellExecute会到系统默认搜索路径中查找可执行文件,并打开。

leon460 发表于 2011-9-16 13:20:42

学习下,多谢分享

xms77 发表于 2011-9-16 16:29:37

谢谢分享,很适合俺们这种菜鸟!

wei999 发表于 2011-9-16 16:38:36

好贴子,谢谢分享!
和8喽的

y1751 发表于 2011-11-11 21:46:47

回复 1# haijie1223


    飘过,学习了。谢谢

pchome2000 发表于 2012-2-1 18:27:47

学习了,了解一下,   正适合我这样的菜鸟

pp648852 发表于 2012-2-1 19:40:26

感谢分享,说得太清楚了!

fangji4983 发表于 2012-2-11 20:21:35

原来如此,学习了
页: [1] 2 3 4 5
查看完整版本: run和ShellExecute的区别