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' 关闭光驱 Private Sub cmd_close_Click() mciSendString "Set CDAudio Door Closed Wait", 0&, 0&, 0& End Sub '打开光驱 Private Sub cmd_open_Click() mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0& End Sub
我想将代码保存为.vbs文件,然后运行光盘就弹出,是不是将上面的代码复制进去就行了?
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 SubPrivate Sub Command1_Click() OpenCDDoor End SubPrivate Sub Command2_Click() CloseCDDoor End Sub
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' CDOpen用来标示光驱开与关的状态Dim CDOpen As BooleanPrivate Sub Command1_Click() On Error Resume Next
' ‘如果关闭则打开,并且按钮做相应变化
If CDOpen = False Then Call CDdoor("set CDAudio door open", 0, 0, 0) CDOpen = True Command1.Caption = "点击关闭光驱" Else
' 否则关闭
Call CDdoor("set CDAudio door closed", 0, 0, 0) CDOpen = False Command1.Caption = "点击打开光驱" End If End SubPrivate Sub Form_Load() CDOpen = False Call CDdoor("set CDAudio door closed", 0, 0, 0) End Sub
最好能把 mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&上参数的意思解释下,如0& 。方便的话。
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参数说明: lpstrCommand:要发送的命令字符串.字符串结构是:[命令][设备别名][命令参数]. lpstrReturnString:返回信息的缓冲区,为一指定了大小的字符串变量. uReturnLength:缓冲区的大小,就是字符变量的长度. hwndCallback:回调方式,一般设为零.(*函数执行成功返回零,否则返回错误代码)---------------------------------- mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&后面参数是设置缓冲区的,在这个命令中,没有使用缓冲区,设为0
Private Sub cmd_close_Click()
mciSendString "Set CDAudio Door Closed Wait", 0&, 0&, 0&
End Sub
'打开光驱
Private Sub cmd_open_Click()
mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&
End Sub
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 SubPrivate Sub Command1_Click()
OpenCDDoor
End SubPrivate Sub Command2_Click()
CloseCDDoor
End Sub
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' CDOpen用来标示光驱开与关的状态Dim CDOpen As BooleanPrivate Sub Command1_Click()
On Error Resume Next
' ‘如果关闭则打开,并且按钮做相应变化
If CDOpen = False Then
Call CDdoor("set CDAudio door open", 0, 0, 0)
CDOpen = True
Command1.Caption = "点击关闭光驱"
Else
' 否则关闭
Call CDdoor("set CDAudio door closed", 0, 0, 0)
CDOpen = False
Command1.Caption = "点击打开光驱"
End If
End SubPrivate Sub Form_Load()
CDOpen = False
Call CDdoor("set CDAudio door closed", 0, 0, 0)
End Sub
将代码编译成exe文件
一个是: mciSendString
另一个是:CDdoor
mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&上参数的意思解释下,如0& 。方便的话。
lpstrCommand:要发送的命令字符串.字符串结构是:[命令][设备别名][命令参数].
lpstrReturnString:返回信息的缓冲区,为一指定了大小的字符串变量.
uReturnLength:缓冲区的大小,就是字符变量的长度.
hwndCallback:回调方式,一般设为零.(*函数执行成功返回零,否则返回错误代码)----------------------------------
mciSendString "Set CDAudio Door Open Wait", 0&, 0&, 0&后面参数是设置缓冲区的,在这个命令中,没有使用缓冲区,设为0
#include <string.h>
void CDRomOpen(BOOL bOpenDrive,TCHAR cDrive)
{
MCI_OPEN_PARMS open;
MCI_STATUS_PARMS status;
DWORD flags;
TCHAR szDriveName[4];
strcpy(szDriveName,"?:");
::ZeroMemory(&open,sizeof(MCI_OPEN_PARMS));
open.lpstrDeviceType=(LPCSTR)MCI_DEVTYPE_CD_AUDIO;
szDriveName[0]=cDrive;
open.lpstrElementName=szDriveName;
flags=MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_OPEN_ELEMENT|MCI_OPEN_SHAREABLE;
if(!mciSendCommand(0,MCI_OPEN,flags,(unsigned long)&open)){
status.dwItem=MCI_STATUS_READY;
if(bOpenDrive)
mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_OPEN,0);
else
mciSendCommand(open.wDeviceID,MCI_SET,MCI_SET_DOOR_CLOSED,0);
mciSendCommand(open.wDeviceID,MCI_CLOSE,MCI_WAIT,0);
}
}int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
TCHAR cdDrive;
if(lpCmdLine!=""){
cdDrive=*lpCmdLine;
CDRomOpen(true,cdDrive);
if(MessageBox(NULL,"是否关闭CDROM","关闭CDROm", MB_YESNO|MB_ICONQUESTION)
==IDYES)
CDRomOpen(false,cdDrive);
}
else {
mciSendString("Set cdaudio door open wait", "", 0, 0);
if(MessageBox(NULL,"是否关闭CDROM","关闭CDROm", MB_YESNO|MB_ICONQUESTION)
==IDYES)
mciSendString ("Set cdaudio door closed wait", "", 0, 0);
} return 0 ;
}