找回密码
 加入
搜索
查看: 3442|回复: 5

[AU3基础] au3怎么搞个跟“开始”-“运行”-“输入……”完全相同功能的函数

  [复制链接]
发表于 2011-3-4 09:57:58 | 显示全部楼层 |阅读模式
ShellExecute()函数可以达到部分这个功能,如:
ShellExecute("www.baidu.com")
但有些不行:如
ShellExecute("%SystemRoot%")
ShellExecute("control hotplug.dll"),当然这个可以用写参数形式的ShellExecute可以达到。
但写法就无法统一了。

怎么搞个函数,只要在“开始”-“运行”能运行的东西,在这个函数里可以达到同样的效果
发表于 2011-3-4 11:00:25 | 显示全部楼层
前面加个start试一下
发表于 2011-3-4 14:00:38 | 显示全部楼层
试下事先定义关键字.把%systemroot%之类的路径转化成字符串.

类似"control hotplug.dll"有参数的,就检查是否有空格,然后从第一个空格切开成命令和参数两部分.
发表于 2011-3-4 14:12:26 | 显示全部楼层
翻译:
1.开始菜单调用:
$oShell = ObjCreate('Shell.Application')
$oShell.FileRun

2.ShellExecute本质就是:
$oShell = ObjCreate('Shell.Application')
$oShell.ShellExecute(路径或文件或网页[,参数][...])

3.所以ShellExecute本质就是调用开始菜单的运行API函数

4.为什么不一致?
因为在开始菜单的运行时,系统先做判断:
(1)如果是%SystemRoot%系统变量,先转换为值,再$oShell.ShellExecute(Value)
(2)如果是control hotplug.dll,系统先会分离为参数再$oShell.ShellExecute(program,para)

5.所以要直接调用开始菜单的运行要想一致,你也需要做调用前的这些判断,除非你用的是:
$oShell = ObjCreate('Shell.Application')
$oShell.FileRun
用ControlSetText送入要执行的命令,再ControlClick(,,"确定按钮")
发表于 2011-3-4 14:15:17 | 显示全部楼层
Kernel32.ExpandEnvironmentStrings扩展环境变量。
Shlwapi.PathIsDirectory、Shlwapi.PathGetArgs、Shlwapi.PathRemoveArgs分析路径。
发表于 2011-3-5 16:37:24 | 显示全部楼层
本帖最后由 lixiaolong 于 2011-3-5 16:40 编辑

au3写的“运行”更新版(在9楼)
http://www.autoitx.com/thread-17677-1-1.html
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-21 13:41 , Processed in 0.077567 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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