au3怎么搞个跟“开始”-“运行”-“输入……”完全相同功能的函数
ShellExecute()函数可以达到部分这个功能,如:ShellExecute("www.baidu.com")
但有些不行:如
ShellExecute("%SystemRoot%")
ShellExecute("control hotplug.dll"),当然这个可以用写参数形式的ShellExecute可以达到。
但写法就无法统一了。
怎么搞个函数,只要在“开始”-“运行”能运行的东西,在这个函数里可以达到同样的效果 前面加个start试一下 试下事先定义关键字.把%systemroot%之类的路径转化成字符串.
类似"control hotplug.dll"有参数的,就检查是否有空格,然后从第一个空格切开成命令和参数两部分. 翻译:
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(,,"确定按钮") Kernel32.ExpandEnvironmentStrings扩展环境变量。
Shlwapi.PathIsDirectory、Shlwapi.PathGetArgs、Shlwapi.PathRemoveArgs分析路径。 本帖最后由 lixiaolong 于 2011-3-5 16:40 编辑
au3写的“运行”更新版(在9楼)
http://www.autoitx.com/thread-17677-1-1.html
页:
[1]