风行者 发表于 2008-12-26 21:35:20

判断光驱状态

想写一个双击程序便能打开光驱,再双击便能关闭光驱。如此反复
$driv = DriveGetDrive("cdrom")
CDTray($driv,"open")

应该怎样判断光驱现在是打开还是关闭状态?从而执行打开光驱或关闭光驱

[ 本帖最后由 风行者 于 2009-1-29 00:50 编辑 ]

philips 发表于 2008-12-26 22:20:56

你无论他是打开还是关闭,都给来先来一句CLOSE 好了啊

风行者 发表于 2008-12-26 22:27:40

不行啊,有没有其他方法啊

sxd 发表于 2008-12-26 23:06:54

我机器上没光驱 没办法测试
DriveStatus
没关上 应该是返回NOTREADY 你试试

风行者 发表于 2008-12-27 00:01:50

还是不行没有反应,无论关闭或打开返回的字符串都是NOTREADY

[ 本帖最后由 风行者 于 2008-12-27 00:03 编辑 ]

大绯狼 发表于 2008-12-27 11:35:46

测试的确返回NOTREADY

.個朲綉√ 发表于 2008-12-27 13:32:38

原帖由 大绯狼 于 2008-12-27 11:35 发表 http://www.autoitx.com/images/common/back.gif
测试的确返回NOTREADY

本是过路人,看到楼上签名,特地回帖:face (12):

liongodmien 发表于 2008-12-27 15:08:56

NOTREADY 通常是未含任何媒体的软驱或CD驱动器。

liongodmien 发表于 2008-12-27 15:10:48

一个打开,一个关闭好了!

风行者 发表于 2008-12-27 17:17:42

在网上搜索都是利用API实现的,au要怎样调用API啊?好像是这个dll,winmm.dll

sxd 发表于 2008-12-27 21:27:51

三恨老家发现的 搬过来
_CdTray("g:","Open");打开光驱

_CdTray("g:","CLosed")   ;关闭光驱

Func _CdTray($Drive,$flags)

DllCall("winmm.dll", "int", "mciSendString", "str", "Open " & $Drive & " Alias Drive" & $Drive & " Type CDAudio", "int", 0, "int", 0, "int", 0)

Switch $flags

       Case"Open"
             DllCall("winmm.dll", "int", "mciSendString", "str", "Set Drive" & $Drive & " Door Open", "int", 0, "int", 0, "int", 0)
       Case"CLosed"
             DllCall("winmm.dll", "int", "mciSendString", "str", "Set Drive" & $Drive & " Door Closed", "int", 0, "int", 0, "int", 0)
EndSwitch
   
EndFunc


[ 本帖最后由 sxd 于 2008-12-28 18:21 编辑 ]

风行者 发表于 2008-12-28 21:52:09

上面的打开光驱后不够一秒就自动关闭了,真的没办法吗?

sanhen 发表于 2008-12-28 22:36:08

搜索了一下,说真的光驱的打开或者关闭状态并不好判断。。。

有个API可以判断光驱内是否有光盘的,可以这样将就判断下咯。。。
不过感觉还是不完美。

liongodmien 发表于 2008-12-29 14:44:45

原帖由 风行者 于 2008-12-28 21:52 发表 http://www.autoitx.com/images/common/back.gif
上面的打开光驱后不够一秒就自动关闭了,真的没办法吗?

没办法,代码也看不明白!LZ你

sxd 发表于 2008-12-29 17:27:36

原帖由 liongodmien 于 2008-12-29 14:44 发表 http://www.autoitx.com/images/common/back.gif


没办法,代码也看不明白!LZ你

不是看不明白 是没明白的看吧
页: [1] 2
查看完整版本: 判断光驱状态