if -- elseif -- ifend

  • Was ist an diesem Script falsch?
    Ich möchte, das überprüft wird, in welchem Laufwerk mein USB-Stick steckt und ob überhaupt (m)ein USB-Stick angeschlossen ist. Das Script soll später als Exe-Datei auf der Festplatte liegen und die Prüfung tätigen, wenn ich die Exe-Datei ausführe.


    Spoiler anzeigen
    [autoit]

    $var_d = DriveGetSerial( "D:\" )
    If $var_d = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk D:\ ist Dein Stick")

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

    ElseIf
    $var_e = DriveGetSerial( "e:\" )
    If $var_e = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk E:\ ist Dein Stick")

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

    ElseIf
    $var_f = DriveGetSerial( "f:\" )
    If $var_f = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk F:\ ist Dein Stick")

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

    ElseIf
    $var_g = DriveGetSerial( "g:\" )
    If $var_g = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk G:\ ist Dein Stick")

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

    ElseIf
    $var_h = DriveGetSerial( "h:\" )
    If $var_h = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk H:\ ist Dein Stick")

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

    ElseIf
    $var_i = DriveGetSerial( "i:\" )
    If $var_i = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk I:\ ist Dein Stick")

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

    ElseIf
    $var_j = DriveGetSerial( "j:\" )
    If $var_j = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk J:\ ist Dein Stick")

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

    ElseIf
    $var_k = DriveGetSerial( "K:\" )
    If $var_k = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk K:\ ist Dein Stick")

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

    ElseIf
    $var_l = DriveGetSerial( "l:\" )
    If $var_l = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk L:\ ist Dein Stick")

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

    ElseIf
    $var_m = DriveGetSerial( "m:\" )
    If $var_m = "1263730919" Then
    MsgBox(0, "Meldung", "Laufwerk M:\ ist Dein Stick")

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

    EndIf

    [/autoit]

    Ob das jemand versteht wo mein problem ist weiß ich nicht, sonst einfach nachfragen.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • [autoit]


    $var_d = DriveGetSerial( "D:\" )
    If $var_d = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk D:\ ist Dein Stick")
    $var_e = DriveGetSerial( "e:\" )
    If $var_e = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk E:\ ist Dein Stick")
    $var_f = DriveGetSerial( "f:\" )
    If $var_f = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk F:\ ist Dein Stick")
    $var_g = DriveGetSerial( "g:\" )
    If $var_g = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk G:\ ist Dein Stick")
    $var_h = DriveGetSerial( "h:\" )
    If $var_h = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk H:\ ist Dein Stick")
    $var_i = DriveGetSerial( "i:\" )
    If $var_i = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk I:\ ist Dein Stick")
    $var_j = DriveGetSerial( "j:\" )
    If $var_j = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk J:\ ist Dein Stick")
    $var_k = DriveGetSerial( "K:\" )
    If $var_k = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk K:\ ist Dein Stick")
    $var_l = DriveGetSerial( "l:\" )
    If $var_l = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk L:\ ist Dein Stick")
    $var_m = DriveGetSerial( "m:\" )
    If $var_m = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk M:\ ist Dein Stick")

    [/autoit]

    Versuchs mal so.

  • Hallo Kevinch.

    Klappt nur WENN ein Stick drinne ist. Ist kein Stick drinne bleibt er bei Laufwerk E:\ stecken. :(

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Alina (9. August 2007 um 18:16)

  • öhm, :comp2: <- =


    ne quatsch, wie trennst du das laufwerk? Mit der Option von Windows, Laufwerk sicher entfernen?

    • Offizieller Beitrag

    Hi!

    Moment :D.

    Edit: Mal in Funktionen gegossen...

    [autoit]

    ; Gibt den Laufwerksbuchstaben des Laufwerkes, in dem der Stick gemountet wurde oder 0 zurück
    ; peethebee
    Func _StickLW($_id)
    For $_i = 65 To 90
    If DriveGetSerial(Chr($i) & ":\") = $_id Then Return Chr($i)
    Next
    Return 0
    EndFunc ;==>_StickLW

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

    ; Erkennen, ob das Skript auf dem Stick mit der ID liegt
    ; von peethebee
    ; Gibt 1 (auf Stick) oder 0 (nicht auf Stick) zurück
    Func _OnStickID($_id)
    For $_i = 65 To 90
    If DriveGetSerial(Chr($i) & ":\") = $_id Then Return 1
    Next
    Return 0
    EndFunc ;==>_OnStickID

    [/autoit]

    (Ungetestet)

    peethebee

  • Klar trenne ich es richtig.

    Es funktioniert, solange ein Stick drinne ist, ist aber keiner drinne bleibt er stehen.

    LG Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Folgendes Skriptchen sollte das selbe bewirken:

    [autoit]

    For $i = 68 To 77
    If DriveGetSerial(Chr($i) & ':\') = '1263730919' Then MsgBox(0, "Meldung", 'Laufwerk ' & Chr($i) & ':\ ist Dein Stick')
    Next

    [/autoit]

    Dabei werden einfach in einer Schleife alle Buchstaben von "D" ( ASCII-Code 68 !) bis "M" durchlaufen ( ASCII-Code 77 )

  • Habe ich auch gerade probiert, ist aber egal wie ich den Stick entferne, das Programm bleibt nicht hängen.

    Hier die etwas kürzere Version:

    [autoit]

    For $i = 67 To 90 ; von C: bis Z:
    $drive = Chr($i) & ":\"
    If DriveGetSerial( $drive ) = "1263730919" Then MsgBox(0, "Meldung", "Laufwerk " & $drive & " ist Dein Stick")
    Next

    [/autoit]

    [EDIT]

    Uups gleichzeitig die selbe Idee :)

    2 Mal editiert, zuletzt von Stilgar (9. August 2007 um 18:29)

  • Hab leider meinen Stick genau heute nicht dabei....

    aber die Skripte laufen hier alle ohne Probleme :comp1: hm, ich probiers daheim nochmal mit meinem Stick

    Einmal editiert, zuletzt von Kevinch (9. August 2007 um 18:32)

    • Offizieller Beitrag

    Hi,

    [autoit]

    Global $serial = 821811646

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

    If _getDriveBySerial($serial) Then
    MsgBox(64, 'USB', 'Laufwerk : ' & _getDriveBySerial($serial), 5)
    Else
    MsgBox(16, 'USB', 'Serial nicht gefunden', 5)
    EndIf

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

    Func _getDriveBySerial($serial)
    For $i = 65 To 90
    If $serial = DriveGetSerial(Chr($i) & ':') Then Return Chr($i) & ':'
    Next
    Return 0
    EndFunc ;==>_getDriveBySerial

    [/autoit]

    So long,

    Mega

  • Ich danke Euch.

    Klappt jetzt super.

    Werde jetzt mal schauen, das ich es hin bekomme, das ein Programm nur startet, wenn der Stick angeschlossen ist.


    Nochmals ganz lieben Dank.

    Lina

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Probiers dochmal so


    $var = DriveGetSerial( StringLeft( @ScriptDir, 3 ))
    $var2 = @OSLang
    $var = $var & $var2
    $var = StringReplace($var, "0", "E")
    $var = StringReplace($var, "1", "J")
    $var = StringReplace($var, "2", "W")
    $var = StringReplace($var, "3", "Z")
    $var = StringReplace($var, "4", "R")
    $var = StringReplace($var, "5", "C")
    $var = StringReplace($var, "6", "V")
    $var = StringReplace($var, "7", "S")
    $var = StringReplace($var, "8", "H")
    $var = StringReplace($var, "9", "A")
    $var = "SF12-" & $var

    If $var <> "SF12-VEHSWEWWAERES" Then
    MsgBox(0, "Fehler", "Diese Version laeuft ausschliesslich auf einem pc. Sorry")
    Exit
    EndIf


    damit hängst es einfach an die HAdwareID deines Sticks dran


    Code um hadwareid rauszufinden:

    ; <AUT2EXE VERSION: 3.2.2.0>

    ; ----------------------------------------------------------------------------
    ; <AUT2EXE INCLUDE-START: C:\Dokumente und Einstellungen\Peter\Desktop\serial.au3>
    ; ----------------------------------------------------------------------------

    $var = DriveGetSerial( "c:\" )
    $var2 = @OSLang
    $var = $var & $var2

    $var = StringReplace($var, "0", "E")
    $var = StringReplace($var, "1", "J")
    $var = StringReplace($var, "2", "W")
    $var = StringReplace($var, "3", "Z")
    $var = StringReplace($var, "4", "R")
    $var = StringReplace($var, "5", "C")
    $var = StringReplace($var, "6", "V")
    $var = StringReplace($var, "7", "S")
    $var = StringReplace($var, "8", "H")
    $var = StringReplace($var, "9", "A")

    $var = "SF12-" & $var

    MsgBox(4096, "Hardware ID", $var)

    ; ----------------------------------------------------------------------------
    ; <AUT2EXE INCLUDE-END: C:\Dokumente und Einstellungen\Peter\Desktop\serial.au3>
    ; ----------------------------------------------------------------------------


    Aber das Programm funkt dann nur,wenn er auf dem Stick istXD

    Weiß aber leider nicht,ob der befehl alle Luafwerksbustaben anerkenntXD
    Der Stick mit dem Proggi drauf wird bei jedem PC ja als ein anderer Bustabe erkannt :D ?(

    $var = DriveGetSerial( StringLeft( @ScriptDir, 3 ))

    Einmal editiert, zuletzt von dieschara (9. August 2007 um 19:09)

  • Das mit der Seriennummer kannte ich noch nicht..
    Funktioniert das auch dann, wenn der Stick keinen eigenen Laufwerksbuchstaben hat?
    Meine Sticks haben keine Laufwerksbuchstaben, weil ich sie in ein Verzeichnis(sinnigerweise C:\Geräte\USB\Sticks\) eingehängt habe..
    Ist ja richtig, ich könnte es ausprobieren :D
    Ich wollte ja nur zu bedenken geben, daß die Laufwerkserkennung nur mit Laufwerksbuchstaben nicht die sicherste Methode ist..
    Gruß
    ytwinky

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Ähmmm keine ahnung XD


    Also da gibts auch einen nachteil,wenn ein Scrippt an die _HadwareID vom Stick gebunden wurde klappt das Proggi immer nur,wenn es beispielsweise als K:\ erkannt wird....


    BEkomm das einfach nicht hin, dass der Stick auch klappt,wenn er als F oder D: oder ein anderen bustaben erkannt wird^^


    PS: Sicher ist es auf jedenfall, da es jede HadwareID nur einmal gibt

    Einmal editiert, zuletzt von dieschara (9. August 2007 um 19:48)