happytc 发表于 2011-3-4 09:57:58

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

ShellExecute()函数可以达到部分这个功能,如:
ShellExecute("www.baidu.com")
但有些不行:如
ShellExecute("%SystemRoot%")
ShellExecute("control hotplug.dll"),当然这个可以用写参数形式的ShellExecute可以达到。
但写法就无法统一了。

怎么搞个函数,只要在“开始”-“运行”能运行的东西,在这个函数里可以达到同样的效果

kevinch 发表于 2011-3-4 11:00:25

前面加个start试一下

easied 发表于 2011-3-4 14:00:38

试下事先定义关键字.把%systemroot%之类的路径转化成字符串.

类似"control hotplug.dll"有参数的,就检查是否有空格,然后从第一个空格切开成命令和参数两部分.

smartzbs 发表于 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(,,"确定按钮")

pusofalse 发表于 2011-3-4 14:15:17

Kernel32.ExpandEnvironmentStrings扩展环境变量。
Shlwapi.PathIsDirectory、Shlwapi.PathGetArgs、Shlwapi.PathRemoveArgs分析路径。

lixiaolong 发表于 2011-3-5 16:37:24

本帖最后由 lixiaolong 于 2011-3-5 16:40 编辑

au3写的“运行”更新版(在9楼)
http://www.autoitx.com/thread-17677-1-1.html
页: [1]
查看完整版本: au3怎么搞个跟“开始”-“运行”-“输入……”完全相同功能的函数