Emiel Wieldraaijer Posted February 10, 2012 Share Posted February 10, 2012 Hi All,I use the following script to automatic add drives plugged in after starting a GUI.But on some computers the program exits with an AutoIt Error and it's caused by the following line$objWMIServices.ExecNotificationQueryAsync ($sink, "SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & "TargetInstance ISA 'Win32_LogicalDisk'")Does the above line depend on a specified service or something else ?For Example this script will not work with a windows installation installed by 'Windows "Arium" 3005 (May 2011 : 644Mo)' Download -> http://depositfiles.com/files/rb0vfsg8kThanksBest regards,Emielexpandcollapse popup#Region #AutoIt3Wrapper_UseUpx=n #AutoIt3Wrapper_Add_Constants=n #EndRegion #include <GUIConstantsEx.au3> #include <ListViewConstants.au3> #Include <GuiListView.au3> Dim $Drive_Set, $LVItems[30] Local $exStyles = BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES,$LVS_EX_CHECKBOXES) $strComputer = "." $objWMIServices = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2") $sink = ObjCreate("WbemScripting.SWbemSink") ObjEvent($sink,"SINK_") $objWMIServices.ExecNotificationQueryAsync ($sink, "SELECT * FROM __InstanceOperationEvent WITHIN 5 WHERE " & "TargetInstance ISA 'Win32_LogicalDisk'") $Parent = GUICreate("DriveList", 520, 320) $list = GUICtrlCreateListView("", 30, 30, 460, 260, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT)) _GUICtrlListView_SetExtendedListViewStyle($list, $exStyles) GUISetState () _GUICtrlListView_AddColumn($list, "Drive", 75) _GUICtrlListView_AddColumn($list, "Used", 92) _GUICtrlListView_AddColumn($list, "Free", 92) _GUICtrlListView_AddColumn($list, "Type", 75) _GUICtrlListView_AddColumn($list, "Label",112) _ListViewDiskInformation () _ListViewSetDiskInformation () While 1 $msg = GuiGetMsg() Switch $msg Case -3 Exit Case -100 To 0 ContinueLoop Case $GUI_EVENT_CLOSE Exit EndSwitch Wend Func _ListViewRenew () _GUICtrlListView_DeleteAllItems($list) _ListViewDiskInformation () _ListViewSetDiskInformation () EndFunc Func _ListViewDiskInformation () $Drive_Set = "" $DriveList = "" $Drive_Set = DriveGetDrive("ALL") EndFunc Func SINK_OnObjectReady($objObject, $objAsyncContext) If $objObject.TargetInstance.DriveType = 2 Then Select Case $objObject.Path_.Class()="__InstanceCreationEvent" _ListViewRenew () Case $objObject.Path_.Class()="__InstanceDeletionEvent" _ListViewRenew () EndSelect EndIf EndFunc Func _ListViewSetDiskInformation () For $i = 1 To $drive_set[0] $DriveType = DriveGetType($drive_set[$i]) $totals = Round(DriveSpaceTotal($drive_set[$i]) / 1024, 1) $spacef = Round(DriveSpaceFree($drive_set[$i]) / 1024, 1) $spaceu = Round(($totals - $spacef), 1) $LVItems[$i] = GUICtrlCreateListViewItem(StringUpper($drive_set[$i]) & "|" & $spaceu & " GB" & "|" & $spacef & " GB" & "|" & DriveGetFileSystem($drive_set[$i]) & "|" & DriveGetLabel($drive_set[$i]), $list) Next EndFunc Best regards,Emiel Wieldraaijer Link to comment Share on other sites More sharing options...
DicatoroftheUSA Posted February 10, 2012 Share Posted February 10, 2012 Yes Windows Management Iinterface is a service. Statism is violence, Taxation is theft. Autoit Wiki Link to comment Share on other sites More sharing options...
Emiel Wieldraaijer Posted February 10, 2012 Author Share Posted February 10, 2012 I bet you did not install the image and take a look if the service is started .. because you would see this will not work even when the WMI service is started Best regards,Emiel Wieldraaijer Link to comment Share on other sites More sharing options...
DicatoroftheUSA Posted February 10, 2012 Share Posted February 10, 2012 (edited) I bet you did not install the image and take a look if the service is started .. because you would see this will not work even when the WMI service is startedIt worked for me. I will not install anything I don't trust off of deposit files. Especially with a potentially hacked WMI.You might want to see the following.http://windowsxp.mvps.org/repairwmi.htm Edited February 10, 2012 by DicatoroftheUSA Statism is violence, Taxation is theft. Autoit Wiki Link to comment Share on other sites More sharing options...
Emiel Wieldraaijer Posted February 10, 2012 Author Share Posted February 10, 2012 You are right, never trust external links.. I already tried the WMI Repair Best regards,Emiel Wieldraaijer Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now