Hilfe beim Usb erkänung

  • Hi @ all

    Ich habe folgendes problem.


    Was ich machen möchte.

    Ich will ein script machen für die PSP woman mit hilfe eines GUI die Firmware ausgewäld werden kann und die dan auf die PSP kopiert wird.

    Wo das problem ist.

    Ich wolte ganz gerne das mein Script erkänt welches Laufwerk die PSP ist doch irgend wie bekomme ich das nicht hin.

    Einmal editiert, zuletzt von Evoli_66 (20. Februar 2008 um 15:14)

  • Ok dan solte es ja so aus sehen.

    Spoiler anzeigen
    [autoit]


    HotKeySet ("{ESC}","_ende")
    $drives = DriveGetDrive("REMOVABLE")
    If IsArray($drives) Then MsgBox(0x40000, "", "Anzahl gefundener wechselbarer Speichermedien: " & $drives[0])
    For $i = 1 To UBound($drives) $driveletter = StringUpper($drives[$i]) & "\" $drivename = DriveGetLabel($driveletter)
    MsgBox(0x40000, "", "Laufwerk " & $i &": " & @CRLF & $driveletter & ' "' & $drivename & '"')
    Next
    Else
    MsgBox(0x40000, "", "Es wurde kein wechselbares Speichermedium gefunden.")
    EndIf
    Func _ende ()
    Sleep (100)
    Exit
    EndFunc

    [/autoit]

    Und wie bekomme ich jetzt die info die ich brauche?

    z.B. Ich lasse das Script laufen und dan fragt er alle Laufwerke ab das ist ja so wie oben. Dan kommt eine meldung das der User die psp anschlissen soll. Dann lass ich das oben noch mal durchlaufen und das Ergäbnis zihe ich dan vom ersten Ergäbnis ab dan solte ich ja das USB Laufwerk haben. Aber wie schreibe ich das als Script?

    • Offizieller Beitrag

    HI,

    okay, das Skript soll also nicht nur für dich sondern auch für andere funktionieren. Wie sieht den eine PS aus, wenn sie im Explorer angezeigt wird.
    Du kannst einfach das Label auslesen. Wäre schöner also alle Laufwerke einlesen, User auffordern sie anzustecken und dann wieder zu prüen was sich geändert hat.

    Mega

    • Offizieller Beitrag

    Hi,

    ja dann musst du halt den Umweg gehen.

    1. Skript starten (alle Laufwerke einlesen --> Buchstaben merken)
    2. PSP anschließen
    3. Button im Skript starten dann vergleichen.

    Oder dies hier: Skript starten dann wird gehorcht ob per USB etwas angeschlossen wird und der Buchstabe zurrückgegeben.

    Spoiler anzeigen
    [autoit]

    Global $strComputer = "."
    Global $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")

    [/autoit] [autoit][/autoit] [autoit]

    $colEvents = $objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceOperationEvent Within 5 Where " _
    & "TargetInstance isa 'Win32_LogicalDisk'")

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $objEvent = $colEvents.NextEvent
    If $objEvent.TargetInstance.DriveType = 2 Then
    Select
    Case $objEvent.Path_.Class()="__InstanceCreationEvent"
    Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & " has been added." & @CR)
    Case $objEvent.Path_.Class()="__InstanceDeletionEvent"
    Consolewrite("Drive " & $objEvent.TargetInstance.DeviceId & " has been removed."& @CR)
    EndSelect
    EndIf
    WEnd

    [/autoit]

    Mega

    P.S.: Wenn du willst bau ich dir auch ne Funktion daraus!

  • Hi,

    ich muss sagen, ich verstehe das ganze mal wieder nicht so wirklich. Du hast eine GUI, da soll man seine Firmware auswählen können (dir ist bekannt das das downgraden von PSP gegen die AGBs verstossen ;) ) warum kann der User dann nicht seinen USB Stick selber aus eine Combo- od. Listbox auswählen????? Du kannst natürlich dein Skript so bauen, das nur Original Speicherkarten von Sony erkannt werden, müsste man anhand einer herstellernummer machen können ;).

    P.S. Ich habe selber eine PSP (und das in meinem Alter :rock: )

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)

  • Also mein Script ist jetzt so weit fetig nur halt das erkänen des laufwerk klapt halt noch nicht.

    Spoiler anzeigen
    [autoit]


    If Not FileExists("c:\temp") Then DirCreate("C:\temp")
    FileInstall("C:\Temp\*.*", "C:\Temp\*.*")

    GUICreate ("All in ON FW für PSP", 300,80)
    GUICtrlcreatelabel ("Bitte wähle eine FW aus die du Installieren möchtes.",10,15)
    $FW150 = GUICtrlCreateButton ("OFW 1.50", 10,40)
    $FW271 = GUICtrlCreateButton ("OFW 2.71", 110,40)
    $FW302 = GUICtrlCreateButton ("OFW 3.02", 210,40)
    GUISetState(@SW_SHOW) Opt("GUIOnEventMode", 1)
    GUICtrlSetOnEvent($FW150, "org150")
    GUICtrlSetOnEvent($FW271, "org271")
    GUICtrlSetOnEvent($FW302, "org302")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_menuclose")

    HotKeySet ("{esc}", "_menuclose")

    While 1
    Sleep (100)
    WEnd

    Func org150 ()
    _RunDOS ("copy c:\temp\org150\*.* ....") ;PSP laufwerk
    MsgBox (0x40000,"Kopieren Fertig", "Beenden sie den USB modus" & @CRLF & "und starten sie das Update unter"& @CRLF & "Game und Memory Stick")
    EndFunc

    Func org271 ()
    _RunDOS ("copy c:\temp\org271\*.* ....") ;PSP laufwerk
    MsgBox (0x40000,"Kopieren Fertig", "Beenden sie den USB modus" & @CRLF & "und starten sie das Update unter"& @CRLF & "Game und Memory Stick")
    EndFunc

    Func org302 ()
    _RunDOS ("copy c:\temp\org302\*.* ....") ;PSP laufwerk
    MsgBox (0x40000,"Kopieren Fertig", "Beenden sie den USB modus" & @CRLF & "und starten sie das Update unter"& @CRLF & "Game und Memory Stick")
    EndFunc

    Func _menuclose ()
    ToolTip ("Tool wird Beendet",500,0)
    Sleep (3000)
    Exit EndFunc

    [/autoit]
  • Versuch mal das hier:

    Spoiler anzeigen
    [autoit]

    dim $driveletter, $drives

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    HotKeySet("{ESC}", "_ende")
    $drives = DriveGetDrive("REMOVABLE")
    If IsArray($drives) Then
    dim $drivename[UBound($drives)]
    MsgBox(0x40000, "", "Anzahl gefundener wechselbarer Speichermedien: " & $drives[0])
    For $i = 1 To UBound($drives) -1
    $driveletter = StringUpper($drives[$i]) & "\"
    $drivename[$i] = DriveGetLabel($driveletter)
    MsgBox(0x40000, "", "Laufwerk " & $i & ": " & @CRLF & $driveletter & ' "' & $drivename[$i] & '"')
    Next
    Else
    MsgBox(0x40000, "", "Es wurde kein wechselbares Speichermedium gefunden.")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0x40000, "", "Jetzt zusätzlich die PSP anschließen.")
    Sleep (2000)
    $drives2 = DriveGetDrive("REMOVABLE")

    [/autoit] [autoit][/autoit] [autoit]

    If IsArray($drives2) Then
    For $i = 1 To UBound($drives2) -1
    $driveletter = StringUpper($drives2[$i]) & "\"
    $pspname = DriveGetLabel($driveletter)
    If IsArray($drives) Then
    If NOT $driveletter == StringUpper($drives[$i]) & "\" AND $pspname == $drivename[$i] Then
    MsgBox(0x40000, "", "PSP-Laufwerk: " & $driveletter & ' "' & $pspname & '"')
    EndIf
    Else
    MsgBox(0x40000, "", "PSP-Laufwerk: " & $driveletter & ' "' & $pspname & '"')
    EndIf
    Next
    Else
    MsgBox(0x40000, "", "Es wurde kein wechselbares Speichermedium gefunden.")
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Func _ende()
    Sleep(100)
    Exit
    EndFunc ;==>_ende

    [/autoit]
    • Offizieller Beitrag

    Hi,

    hast du meinen Code mal getestet?

    Spoiler anzeigen
    [autoit]

    Opt('MustDeclareVars', 1)

    [/autoit] [autoit][/autoit] [autoit]

    MsgBox(0, 0, _getNewUSB())

    [/autoit] [autoit][/autoit] [autoit]

    Func _getNewUSB()
    Local $strComputer = ".", $objEvent = 0
    Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
    Local $colEvents = $objWMIService.ExecNotificationQuery _
    ("Select * From __InstanceOperationEvent Within 5 Where " _
    & "TargetInstance isa 'Win32_LogicalDisk'")
    While 1
    $objEvent = $colEvents.NextEvent
    If $objEvent.TargetInstance.DriveType = 2 Then
    If $objEvent.Path_.Class() = "__InstanceCreationEvent" Then Return $objEvent.TargetInstance.DeviceId
    EndIf
    Sleep(10)
    WEnd
    EndFunc ;==>_getNewUSB

    [/autoit]

    Mega