Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

USB Sticks erkennen und reagieren - pls. help



  • Please log in to reply
18 replies to this topic
cem80
  • Members
  • 33 posts
  • Last active: Oct 07 2016 04:12 AM
  • Joined: 07 Aug 2013

Du meinst so:

 

    #NoEnv 
    #SingleInstance force 
    SetWorkingDir %A_ScriptDir% 
    SetBatchLines -1 
    SetControlDelay, -1 
    SetWinDelay, -1
   
    SoundPlay, *48
    OnMessage(0x219, "WM_DEVICECHANGE")
     
    
    Return 
     
    WM_DEVICECHANGE(wParam) {
    If (wParam <> 0x8000)
    Return
    MySerials := "3639805961 2689242349 1417670601"
    DriveGet,DriveList,List
    Loop, Parse, DriveList
    {
    DriveGet, SerialNumber, Serial, % A_LoopField ":"
    If (SerialNumber && !InStr(MySerials, SerialNumber))  elseif  {
    
   if  FileExist(A_LoopField ":\Test.exe" ) {
        
        
        Run, % A_LoopField ":\Test.exe" 
    } Else
    Run, % A_ScriptDir "\RemoveDrive.exe " A_LoopField ":"
    }
    }
    }
     

    ; Alt-F12 = Seriennummern der fest eingebauten Laufwerke auslesen
    ; und in die Zwischenablage kopieren
    !F12::
    Clipboard :=
    DriveGet,DriveList,List
    Loop, Parse, DriveList
    {
    DriveGet, SerialNumber, Serial, % A_LoopField ":"
    If SerialNumber
    Clipboard .= (Clipboard = "") ? SerialNumber : " " SerialNumber
    }
    MsgBox % "Seriennummern der fest eingebauten Laufwerke: " Clipboard
    Return
   

So wird durch das Registrieren der Seriennnummer vom Stick nur wieder wie vorher bei unbekannt = rauswurf
& bekannt = keine Reaktion.

Hmm... :D Bahnhof wirds mir langsam im Kopf.



Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012

Ähh... Nein, das ElseIf kommt eigentlich hinter den gesamten If-Block und da im ElseIf ja schon ein "If" drin steckt musst du das danach auch nicht nochmal extra schreiben, so hab ich das gemeint... ;)

 

Probier mal:

      ; ===============================================================================================================================
    ; AHK Version ...: AHK_L 1.1.11.02 x64 Unicode
    ; Win Version ...: Windows 7 Ultimate x64 SP1
    ; Author(s) .....: Seidenweber
    ; ===============================================================================================================================
    ; =='GLOBALE EINSTELLUNGEN'======================================================================================================
    ; ===============================================================================================================================
     
    #NoEnv ; Nicht nachsehen, ob leere Varibalen evtl. Umgebungsvariablen sind
    #SingleInstance force ; Bei Neustart des Scriptes die alte Instanz ohne Nachfrage ersetzen
    SetWorkingDir %A_ScriptDir% ; Dateioperationen werden im Scriptverzeichnis vorgenommen, wenn kein Pfad angegeben wird.
    SetBatchLines -1 ; Das Script läuft ohne Zwangspausen. (nur für schnelle Rechner empfohlen)
    SetControlDelay, -1 ; Wartezeit beim Zugriff auf langsame Controls abschalten. (nur für schnelle Rechner empfohlen)
    SetWinDelay, -1 ; Verzögerung bei allen Fensteroperationen abschalten. (nur für schnelle Rechner empfohlen)
     
    ; =='AUTOEXEC-SEKTION'===========================================================================================================
    ; ===============================================================================================================================
    SoundPlay, *48
    OnMessage(0x219, "WM_DEVICECHANGE")
     
    ; =='ENDE DER AUTOEXEC-SEKTION'==================================================================================================
    Return ; Nachfolgend werden Funktionen, Sub-Label und HotKeys definiert
    ; ===============================================================================================================================
     
 WM_DEVICECHANGE(wParam) {
    If (wParam <> 0x8000)
        Return
     MySerials := "3639805961 2689242349 1417670601"
     DriveGet,DriveList,List
     Loop, Parse, DriveList
     {
        DriveGet, SerialNumber, Serial, % A_LoopField ":"
        If (SerialNumber && !InStr(MySerials, SerialNumber))
        {
            ; unbekanntes Gerät angeschlossen
            ; Benötigt RemoveDrive.exe im Scriptverzeichnis -> http://www.uwe-sieber.de/drivetools.html
            If FileExist(A_LoopField ":\MyStick.sem" )
            {
                MsgBox,4160,,Entwarnung
                Run, % A_ScriptDir "\Test.exe"   ; Test.exe muss im Scriptverzeichnis liegen
                Run, % A_LoopField ":\Test.exe"  ; Test.exe muss im Root auf dem Stick liegen
            }
            Else
            {
                Run, % A_ScriptDir "\RemoveDrive.exe " A_LoopField ":"
            }
        }
        Else If (FileExist(A_LoopField ":\Test.exe" ))
        {
            ; Falls die Seriennummer in der Liste auftauch und sich Test.exe im Stickverzeichnis befindet
            Run, % A_LoopField ":\Test.exe"
        }
    }
}
     
    ; Alt-F12 = Seriennummern der fest eingebauten Laufwerke auslesen
    ; und in die Zwischenablage kopieren
    !F12::
    Clipboard :=
    DriveGet,DriveList,List
    Loop, Parse, DriveList
    {
    DriveGet, SerialNumber, Serial, % A_LoopField ":"
    If SerialNumber
    Clipboard .= (Clipboard = "") ? SerialNumber : " " SerialNumber
    }
    MsgBox % "Seriennummern der fest eingebauten Laufwerke: " Clipboard
    Return
     
    ; Beenden des Scriptes
    Escape::
    SoundPlay, *64
    ExitApp
    Return

So sollte jetzt ein Schuh draus werden...


Find the recent autohotkey version here: ahkscript.org


cem80
  • Members
  • 33 posts
  • Last active: Oct 07 2016 04:12 AM
  • Joined: 07 Aug 2013

Tatsächlich, es funktioniert.
Guter Schuh :)

Danke und bis.. muss jetzt leider aus dem Haus.

l.g.



Shadow1209
  • Members
  • 1 posts
  • Last active: Dec 06 2014 12:26 PM
  • Joined: 06 Dec 2014

Hallo,

wenn der Stick schon drin ist und man startet das Script wird er aber nicht rausgeworfen. Kann man das ändern?