找回密码
 加入
搜索
查看: 3747|回复: 11

au3脚本怎么使用devcon.exe

[复制链接]
发表于 2009-4-9 17:10:55 | 显示全部楼层 |阅读模式
不知道问的合理否?

我想写一个脚本来控制设备管理器里面的一个设备的开关动作.
运用devcon.exe的命令disable和enable可以实现开关一个硬件设备的功能,
如果想用au3脚本编写一个控件界面来操作设备的开关,该怎么去写呢??怎么使用上dencon.exe??

不知道表达的清楚没??希望朋友能够帮提供点思路,谢谢!!!

[ 本帖最后由 starl 于 2009-4-20 13:57 编辑 ]
发表于 2009-4-9 18:28:34 | 显示全部楼层
先学爬再学走,不要一来就想着做个什么程序出来。。。。
控件界面用koda画就可以了,很多函数可以看帮助~~
 楼主| 发表于 2009-4-13 14:20:28 | 显示全部楼层
谢谢zjimmy的教导

请教下帮助文档里面写了使用dos命令可以使用runwait(@comspec & "/c"&"command")这个函数,这个函数里面的“/c”这个参数是指盘符路径还是什么?devcon.exe的命令disable和enable应该也属于dos命令吧!怎么我使用却报告错误无法执行外部程序。可能是我还没理解这个函数使用dos命令的用法,希望达人帮忙解疑。。。谢谢
发表于 2009-4-13 14:39:08 | 显示全部楼层
/c 是 cmd.exe /c 的参数 可以执行完后面的命令以后关闭
还有  你上面runwait(@comspec & "/c"&"command")   这个 /c 前后都有空格 " /c "
 楼主| 发表于 2009-4-13 14:56:49 | 显示全部楼层
原帖由 seominho 于 2009-4-13 14:39 发表
/c 是 cmd.exe /c 的参数 可以执行完后面的命令以后关闭
还有  你上面runwait(@comspec & "/c"&"command")   这个 /c 前后都有空格 " /c "



谢谢!!!

runwait(@comspec & " /c \devcon.exe "&"disable",@systemdir,@SW_HIDE)
devcon.exe(disable\enable)这两个命令是ms提供直接操作硬件的开关,我上面这样使用执行总是报错不能执行外部程序。。。对于这个函数的使用dos命令不太清楚,帮助文档好像也没什么信息,期待达人帮忙传道授业解惑,谢谢!!
发表于 2009-4-13 15:31:57 | 显示全部楼层
我这里执行上面语句没有错。。。。。。不过不知道命令是否执行
看看是不是有别的什么错误
或者 你可以试试 ShellExecute 或 ShellExecuteWait
 楼主| 发表于 2009-4-13 16:42:28 | 显示全部楼层
#include <GUIConstants.au3>
Dim $string = "enable"
GUICreate("音量控制",180,60)
$button = GUICtrlCreateButton("enable",20,10,60,30)
FileInstall("E:\自动脚本\脚本程序\devcon.exe",@SystemDir)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
    Case $msg = $button
         $string = GUICtrlRead($button)
          If $string = "enable" Then
         GUICtrlSetData($button,"disable")
RunWait(@ComSpec & ' /c '& '\windows\systen32\devcon.exe'&'disable'&'USB_CLASS\01',@SystemDir,@SW_HIDE)
          ElseIf $string = "disable" Then
          GUICtrlSetData($button,"enable")
RunWait(@ComSpec & ' /c '& '\windows\systen32\devcon.exe'&'enable'&'USB_CLASS\01',@SystemDir,@SW_HIDE)
           EndIf
    Case $msg = $GUI_EVENT_CLOSE
                        Exit
EndSelect
WEnd       

就是做一个简单的控件来控制这个USB设备的开关动作,('USB_CLASS\01')这个是这个硬件的ID。可是这个脚本可以运行,却不能编译成.exe文件,很奇怪? 运行了好像没有发生实际的操作。。。可能是runwait这个函数用的有点问题吧。。。希望达人有空帮忙测试下,谢谢。。
 楼主| 发表于 2009-4-14 09:30:41 | 显示全部楼层
。。。都快沉了!!!
大虾们有空帮忙诊断下啊!!!!
 楼主| 发表于 2009-4-15 17:34:46 | 显示全部楼层
哎 学艺不精!!!研究了半天果然是runwait函数的参数定义错误。。。
虽然现在搞定了,不过还是有疑惑啊!!帮助文档里面这样定义RunWait(@comspec & " \c " & "命令","",@SW_HIDE)
下面是我使用的情况,能通过使用DOS命令正常开关设别管理器里面的硬件设备!
RunWait(@comspec & " \c  devcon disable " & " USB\CLASS_01","",@SW_HIDE)
RunWait(@comspec & " \c  devcon enable " & " USB\CLASS_01","",@SW_HIDE)

可是参数的设置跟文档的不一样,devcon disable是命令 USB\CLASS_01是一个设备的ID

不过还是谢谢大家的指点帮忙!!!
发表于 2009-4-15 18:24:37 | 显示全部楼层
原帖由 starl 于 2009-4-15 17:34 发表
哎 学艺不精!!!研究了半天果然是runwait函数的参数定义错误。。。
虽然现在搞定了,不过还是有疑惑啊!!帮助文档里面这样定义RunWait(@comspec & " \c " & "命令","",@SW_HIDE)
下面是我使用的情况,能通过使用 ...


帮助文档完全没有问题


RunWait(@comspec & " \c " & "devcon disable  USB\CLASS_01","",@SW_HIDE)
RunWait(@comspec & " \c " & "devcon enable  USB\CLASS_01","",@SW_HIDE)
 楼主| 发表于 2009-4-15 18:52:39 | 显示全部楼层
zjimmy你好,谢谢你的回复!
RunWait(@comspec & " \c " & "devcon disable  USB\CLASS_01","",@SW_HIDE)
RunWait(@comspec & " \c " & "devcon enable  USB\CLASS_01","",@SW_HIDE)
哎 怪自己学艺不精啊!!!测试了下文档是对的,呵呵!!
想想也是啊,这个运算符& 本来就是连接的作用,都是字符串的连接!

谢谢大家的帮忙,可以结贴了,O(∩_∩)O~
发表于 2012-8-19 17:52:45 | 显示全部楼层
呵呵,半天没看明白,不过多看还是可以的噻、、
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-9-30 03:25 , Processed in 0.119281 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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