找回密码
 加入
搜索
查看: 30685|回复: 69

[原创] run和ShellExecute的区别

 火... [复制链接]
发表于 2011-9-9 22:47:51 | 显示全部楼层 |阅读模式
本帖最后由 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")

以上这个命令会跳出“打开方式”对话框,因为系统不认识没有扩展名的文件,除非你提前设定系统用什么程序来打开这类没有扩展名的文件。

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

评分

参与人数 1金钱 +30 收起 理由
魔导 + 30 经验贴,赞

查看全部评分

发表于 2011-9-9 23:50:15 | 显示全部楼层
了解,谢谢分享
发表于 2011-9-11 15:12:26 | 显示全部楼层
好贴子,谢谢分享!
发表于 2011-9-12 11:30:09 | 显示全部楼层
run只能运行EXE, BAT, COM, 和PIF程序,而以别的后缀为名的可执行文件运行不了.
shellexecute可以执行所有可执行的程序,如txt,excel,word etc.exe.com....

楼下继续补充
发表于 2011-9-13 13:28:36 | 显示全部楼层
谢谢分享,合适菜鸟,我就是。
发表于 2011-9-13 14:18:21 | 显示全部楼层
谢谢,正适合我这样的菜鸟
发表于 2011-9-16 11:08:04 | 显示全部楼层
嗯。谢了。欢迎多发些类似的贴。
发表于 2011-9-16 11:12:49 | 显示全部楼层
作一个重要补充,如果不对请指正。
1:Run("winword.exe")
2:ShellExecute("winword.exe")
在上面中,1行脚本不会成功,因为run不会在当前路径中找到winword.exe。
          2行脚本会得到执行,ShellExecute会到系统默认搜索路径中查找可执行文件,并打开。
发表于 2011-9-16 13:20:42 | 显示全部楼层
学习下,多谢分享
发表于 2011-9-16 16:29:37 | 显示全部楼层
谢谢分享,很适合俺们这种菜鸟!
发表于 2011-9-16 16:38:36 | 显示全部楼层
好贴子,谢谢分享!
和8喽的
发表于 2011-11-11 21:46:47 | 显示全部楼层
回复 1# haijie1223


    飘过,学习了。谢谢
发表于 2012-2-1 18:27:47 | 显示全部楼层
学习了,了解一下,   正适合我这样的菜鸟
发表于 2012-2-1 19:40:26 | 显示全部楼层
感谢分享,说得太清楚了!
发表于 2012-2-11 20:21:35 | 显示全部楼层
原来如此,学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-16 21:22 , Processed in 0.083762 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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