找回密码
 加入
搜索
楼主: 风行者

判断光驱状态

[复制链接]
 楼主| 发表于 2008-12-29 20:29:25 | 显示全部楼层
dllcall是看不明白

不过还是关心判断光驱状态问题,因为VB可以做到,想知道au3可不可以

[ 本帖最后由 风行者 于 2008-12-29 20:31 编辑 ]
发表于 2008-12-29 20:41:56 | 显示全部楼层
你发VB的代码上来,我看下,尽量帮你改成AU3的。
 楼主| 发表于 2008-12-29 22:16:30 | 显示全部楼层

在网上找到的一篇VB打开光驱文章

在VB6.0的开发环境中,添加一个按钮,编写如下代码:
Option Explicit
''说明:CDdoor函数是安装WINDOWS时所自带的winmm.dll文件中包含的函数
Private Declare Function CDdoor Lib "winmm.dll" Alias "mciSendStringA" _
( ByVal lpstrCommand As String,ByVal lpstrReturnString As String, _
ByVal uReturnLength As Long, ByVal hwndCallback As Long ) As Long
Dim CDOpen As Boolean
Private Sub cmdControl_Click()
On Error Resume Next
''如果关闭则打开,并且按钮做相应变化
If CDOpen = False Then
Call CDdoor("打开", 0, 0, 0)
CDOpen = True
cmdControl.Caption = "点击关闭光驱"
Else
''否则关闭
Call CDdoor("关闭", 0, 0, 0)
CDOpen = False
cmdControl.Caption = "点击打开光驱"
End If
End Sub

Private Sub Form_Load()
CDOpen = False
Call CDdoor("关闭光驱", 0, 0, 0)
End Sub

//注:F5运行,就可以控制光驱了。本示例在Win2003,VB6.0环境下运行提通过。
本文来源【学网】网站链接是http://www.xue5.com
 楼主| 发表于 2008-12-29 23:00:53 | 显示全部楼层

这是另外一篇

加入如下的声明后就能引用这个API函数:



  Private Declare Function CDdoor Lib "winmm.dll" Alias "mciSendStringA" _
   ( _
   ByVal lpstrCommand As String, _      
   ByVal lpstrReturnString As String, _  
   ByVal uReturnLength As Long, _      
   ByVal hwndCallback As Long _
   ) As Long



  引用的语法是:
           Call CDdoor("set CDAudio door closed", 0, 0, 0)  '用以关闭光驱门
           Call CDdoor("set CDAudio door open", 0, 0, 0)  '用以打开光驱门



  程序中使用了一个布尔型变量来标示当前光驱门开与关的状态。



  如果配合检测光驱是否存在的函数一起使用,此程序的通用性会更高。而关于检测驱动
器信息的函数GetDriveType,GetLogicalDrives,我们会在另外一个实例中介绍。
或用下方法:
声明 :



Private Declare Function mciSendString Lib "winmm.dll" Alias _
"mciSendStringA" (ByVal lpstrCommand As String, _
ByVal lpstrReturnString As String, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long) As Long



代码 :



Sub OpenCDDoor()
    mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&
End Sub



Sub CloseCDDoor()
    mciSendString "Set CDAudio Door Closed Wait", 0&, 0&, 0&
End Sub
发表于 2008-12-30 02:31:57 | 显示全部楼层
这个VB代码不是真正的判断光驱的状态。只是代码在打开或者关闭光驱的时候做一个标志罢了。如果我的光驱原来是打开的,再用它的代码一样是不成功的。
发表于 2008-12-30 08:48:13 | 显示全部楼层
想法:
光驱开或关都会发出一个相应的动作信息,系统当然得会取得这个信息的,如果能够拿到这个信息,就能判断光驱的开关状态了。
发表于 2008-12-30 22:26:44 | 显示全部楼层
看不明白
发表于 2008-12-30 23:06:28 | 显示全部楼层
百度可以搜到VC++的一个监控光驱状态的实例 里面有WMI的方法
发表于 2009-1-28 23:53:08 | 显示全部楼层
 楼主| 发表于 2009-1-29 00:50:10 | 显示全部楼层
感谢sxd的帮助,au3的确可以实现
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-19 01:26 , Processed in 0.075198 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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