'
' from Chip Pearson
' http://www.cpearson.com/excel/PlaySound.aspx
'
Public Declare Function sndPlaySound32 _
Lib "winmm.dll" _
Alias "sndPlaySoundA" ( _
ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
'SND_SYNC = &H0
'SND_ASYNC = &H1
'SND_NODEFAULT = &H2
'SND_MEMORY = &H4
'SND_LOOP = &H8
'SND_NOSTOP = &H10
Public Sub API_PlaySound(psFilename As String)
Call sndPlaySound32(psFilename, &H2 + &H1) 'SND_NODEFAULT + SND_ASYNC
End Sub
Public Sub PlayMySoundFile() 'change name to whatever you want
Dim sFile As String _
, sPathFile As String
sPathFile = "c:\path\myFile.wav" '------- change to name of your file
If Len(Dir(sPathFile)) > 0 Then
Call sndPlaySound32(sPathFile, &H2 + &H1) 'SND_NODEFAULT + SND_ASYNC
End If
End Sub
<html>
<head>
<title>USB Drive Alert</title>
<hta:application
applicationname="USB Drive Alert"
id="usbalert"
border="dialog"
innerborder="no"
maximizebutton="no"
scroll="no"
version="1.0"/>
<!--Create handler for async event monitoring-->
<object ID="objSink" CLASSID="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223"></object>
<!--Create handler for event handler-->
<script language="vbscript" for="objSink" event="OnObjectReady(objEvent, objContext)">
Call objSinkOnObjectReady(objEvent, objContext)
</script>
<script language="vbscript">
Sub Window_OnLoad
' Size Window, position it
self.ResizeTo 600, 300
self.MoveTo 10, 10
' Create WMI object to monitor LogicalDisk events
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
strSql = "Select * From __InstanceOperationEvent Within 1 Where TargetInstance isa 'Win32_LogicalDisk'"
objWMI.ExecNotificationQueryAsync objSink, strSQL
End Sub
Sub ExitButton()
' Close window
window.Close
End Sub
Sub objSinkOnObjectReady(objEvent, objContext)
Const RemovableDisk = 2
' Only interested in removable disk events
If objEvent.TargetInstance.DriveType = RemovableDisk Then
' See what even this is and process if desired
Select Case objEvent.Path_.Class
' Drive added event
Case "__InstanceCreationEvent"
' Display message indicating drive added
StatusLine "Removable drive " & objEvent.TargetInstance.DeviceId & " has been added."
' Drive removed event
Case "__InstanceDeletionEvent"
' Display message indicating drive removed and play alarm sound
StatusLine "Removable drive " & objEvent.TargetInstance.DeviceId & " has been removed."
Alarm.play()
End Select
End If
End Sub
Sub StatusLine(strText)
' Add a line to the text message box
txtMessages.Value = txtMessages.Value & Now() & " - " & strText & vbCrLf
End Sub
</script>
</head>
<body>
<textarea id="txtMessages" readonly rows="10" cols="60"></textarea>
<p>
<input id="btnExit" style="width: 80px" type="button" value="Exit" name="exit_button" onClick="ExitButton">
<embed id="Alarm" name="Alarm" src=".\siren.wav" loop="false" hidden="true" autostart="false">
</body>
</html>
~bp