Private Declare Sub SendStringA Lib "winmm.dll" (ByVal lpstrCommand As String, _
ByVal lpstrReturnString As Any, ByVal uReturnLength As Long, _
ByVal hwndCallback As Long)
Sub OpenCDTray()
SendStringA "Set CDAudio Door Open", 0&, 0, 0
End Sub
Sub CloseCDTray()
SendStringA "Set CDAudio Door Closed", 0&, 0, 0
End Sub
Simon's version is nicer though.![]()
'API Declarations
#If VBA7 Then
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
pstrReturnString As String, ByVal uReturnLength As LongPtr, ByVal _
wndCallback As LongPtr) As LongPtr
#Else
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
pstrReturnString As String, ByVal uReturnLength As Long, ByVal _
wndCallback As Long) As Long
#End If
'Routines to call APIs
Sub OpenOrShutCDDrive(DoorOpen As Boolean)
#If VBA7 Then
Dim lRet As LongPtr
#Else
Dim lRet As Long
#End If
If DoorOpen Then
lRet = mciSendString("Set CDAudio Door Open", 0&, 0&, 0&)
Else
lRet = mciSendString("Set CDAudio door closed", 0&, 0&, 0)
End If
'lRet will = 0 upon success, so if you want to make this
'a function, return true if lret = 0, false otherwise
End Sub
Sub OpenCD()
OpenOrShutCDDrive (1)
End Sub
Sub CloseCD()
OpenOrShutCDDrive (0)
End Sub
Give it a go, and let me know what happens.![]()
[FONT=monospace]'API Declarations[/FONT]
#If VBA7 Then Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As LongPtr) As Long
Set oWMP = CreateObject("WMPlayer.OCX.7" )
Set colCDROMs = oWMP.cdromCollection
if colCDROMs.Count >= 1 then colCDROMs.Item(1).Eject