Hallo Community,
habe ein kleines Problem. Und zwar schaffe ich es nicht, auf mein Handy mit AutoIt zuzugreifen. Dies geht weder noch durch FileExists oder FileRead. Das Problem ist, dass mein Handy keinen Laufwerksbuchstaben hat.
Hier ein kleines Bild (Handy unter "Arbeitsplatz")
[Blockierte Grafik: http://image.burakkeskin.de/rechner/arbeitsplatz.png]
"Mein" Script bisher:
Spoiler anzeigen
HotKeySet("{ESC}", "_Exit")
[/autoit] [autoit][/autoit] [autoit]Global $sDeviceProperty = "Name" ;Caption, Description, DeviceID, Name, PNPDeviceID
Global $sUSBDevice = "Nokia 5800 XpressMusic USB Serial Port (COM3)" ;property value for Caption, Description, DeviceID, Name or PNPDeviceID
Global $fDeviceActive = _FindUSBDevice($sDeviceProperty) ;initialize variable with device state. global var prevents retriggering by other device insertion/removal
ConsoleWrite($fDeviceActive & @LF)
exit
;~ If $fDeviceActive = -1 Then ConsoleWrite("! Error finding device: " & @error & @LF)
ConsoleWrite("> Monitoring - Press ESC to Exit: " & @LF)
[/autoit] [autoit][/autoit] [autoit]_Main()
[/autoit] [autoit][/autoit] [autoit]Func _Main()
Local Const $WM_DEVICE_CHANGE = 0x0219
GUICreate("") ;dummy gui for receiving window messaging
GUIRegisterMsg($WM_DEVICE_CHANGE, "_WM_DEVICE_CHANGE")
While 1
Sleep(1000)
WEnd
EndFunc ;==>_Main
Func _Exit()
Exit
EndFunc ;==>_Exit
Func _WM_DEVICE_CHANGE($hWnd, $Msg, $wParam, $lParam)
#forceref $hWnd, $Msg, $wParam, $lParam
Local Const $DBT_DEVNODES_CHANGED = 0x00000007
If $wParam = $DBT_DEVNODES_CHANGED Then
Switch _FindUSBDevice($sDeviceProperty)
Case 1
If Not $fDeviceActive Then ;check current state buffer to prevent events from other usb devices
$fDeviceActive = True
ConsoleWrite("+ Device Connected" & @LF)
EndIf
Case 0
If $fDeviceActive Then ;check current state buffer to prevent events from other usb devices
$fDeviceActive = False
ConsoleWrite("! Device Disconnected" & @LF)
EndIf
Case -1
ConsoleWrite("! WMI Error: " & @error & @LF)
EndSwitch
EndIf
Return "GUI_RUNDEFMSG"
EndFunc ;==>_WM_DEVICE_CHANGE
Func _FindUSBDevice($sProperty = "*", $strComputer = ".")
Local $objWMIService = ObjGet("winmgmts:" & $strComputer & "rootcimv2")
If @error Then Return SetError(1, 0, -1)
Local $colDevices = $objWMIService.ExecQuery("Select Dependent From Win32_USBControllerDevice") ;Select Dependent instead of Select * - limit items in collection to speed up response slightly
If Not IsObj($colDevices) Then Return SetError(2, 0, -1)
Local $arrDeviceNames, $colUSBDevices
For $objDevice In $colDevices
$arrDeviceNames = StringSplit(StringReplace($objDevice.Dependent, Chr(34), ""), "=", 2)
If @error Or UBound($arrDeviceNames) <> 2 Then Return SetError(3, 0, -1)
$colUSBDevices = $objWMIService.ExecQuery("Select " & $sProperty & " From Win32_PnPEntity Where DeviceID = '" & $arrDeviceNames[1] & "'");Select $sProperty instead of Select * - limit items in collection to speed up response slightly
If Not IsObj($colUSBDevices) Then Return SetError(4, 0, -1)
For $objUSBDevice In $colUSBDevices
;ConsoleWrite("USB Description: " & Execute("$objUSBDevice." & $sProperty) & @LF)
If (Execute("$objUSBDevice." & $sProperty) == $sUSBDevice) Then Return 1 ;device found
If @error Then Return SetError(5, 0, -1)
Next
Next
Return 0 ;device not found
EndFunc ;==>_FindUSBDevice
Func _Test($strComputer = ".")
;use to find your USB device WMI property name and value, then copy/paste value to $sUSBDevice and property name to $sDeviceProperty
Local $objWMIService = ObjGet("winmgmts:" & $strComputer & "rootcimv2")
Local $colDevices = $objWMIService.ExecQuery("Select Dependent From Win32_USBControllerDevice")
Local $arrDeviceNames, $colUSBDevices, $Output
For $objDevice In $colDevices
$arrDeviceNames = StringSplit(StringReplace($objDevice.Dependent, Chr(34), ""), "=", 2)
$colUSBDevices = $objWMIService.ExecQuery("Select * From Win32_PnPEntity Where DeviceID = '" & $arrDeviceNames[1] & "'")
For $objItem In $colUSBDevices ;properties that usually return no value or are not needed are commented
;$Output &= "Availability: " & $objItem.Availability & @CRLF
$Output &= "Caption: " & $objItem.Caption & @CRLF
$Output &= "Description: " & $objItem.Description & @CRLF
$Output &= "Name: " & $objItem.Name & @CRLF
$Output &= "Manufacturer: " & $objItem.Manufacturer & @CRLF
$Output &= "ClassGuid: " & $objItem.ClassGuid & @CRLF
;$Output &= "ConfigManagerErrorCode: " & $objItem.ConfigManagerErrorCode & @CRLF
;$Output &= "ConfigManagerUserConfig: " & $objItem.ConfigManagerUserConfig & @CRLF
;$Output &= "CreationClassName: " & $objItem.CreationClassName & @CRLF
$Output &= "DeviceID: " & $objItem.DeviceID & @CRLF
;$Output &= "ErrorCleared: " & $objItem.ErrorCleared & @CRLF
;$Output &= "ErrorDescription: " & $objItem.ErrorDescription & @CRLF
;$Output &= "InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF
;$Output &= "LastErrorCode: " & $objItem.LastErrorCode & @CRLF
$Output &= "PNPDeviceID: " & $objItem.PNPDeviceID & @CRLF
$strPowerManagementCapabilities = $objItem.PowerManagementCapabilities(0)
;$Output &= "PowerManagementCapabilities: " & $strPowerManagementCapabilities & @CRLF
;$Output &= "PowerManagementSupported: " & $objItem.PowerManagementSupported & @CRLF
$Output &= "Service: " & $objItem.Service & @CRLF
$Output &= "Status: " & $objItem.Status & @CRLF
;$Output &= "StatusInfo: " & $objItem.StatusInfo & @CRLF
;$Output &= "SystemCreationClassName: " & $objItem.SystemCreationClassName & @CRLF
;$Output &= "SystemName: " & $objItem.SystemName & @CRLF
ConsoleWrite("+ " & $Output & @LF) ;use to find your device name, then copy/paste to $sUSBDevice declaration
$Output = ""
Next
Next
EndFunc ;==>_Test
Hier gibt es etwas, was ich dazu gefunden habe. So ganz verstanden habe ich das leider nicht (Einträge nicht bei mir vorhanden).