Wie GUICtrlCreateInput aufteilen in Vorgabewert und Eingabewert? für Ordner-Jumper.

  • Habe ein kleines Script erstellt wo ich nicht weiter komme.
    Ich möchte in einen Auftragsordner springen, der sehr viele Ordner beinhaltet, die so benannt sind: 01-XXXX-11.
    X sind dabei immer nur vier variable Nummern. Ich wollte also immer nur die vier Zahlen eingeben müßen.
    Weiß aber nicht wie ich das mache?
    Also um in den Ordner zu springen brauch ich ja immer '01-' dann die variable Zahl und dann folgt '-11'.

    Script sieht so aus:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    ;#RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

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

    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2

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

    $Pfad1= "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2= "L:\G...\KIen....\AUFTRAG 2011\"

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

    GUICreate("Ordner-Jumper", 210, 120)
    If Not @compiled Then GUISetIcon('Ordner.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 15, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 15, 65, 150, 13)

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

    $Jump1= GUICtrlCreateButton("1", 155, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1=GUICtrlCreateInput("", 35, 30, 100, 20)
    GUICtrlCreateLabel("01-", 17, 32, 17, 13)
    GUICtrlCreateLabel("-11", 137, 32, 17, 13)

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

    $Jump2= GUICtrlCreateButton("2", 155, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2=GUICtrlCreateInput("", 35, 85, 100,20)
    GUICtrlCreateLabel("02-", 17, 87, 17, 13)
    GUICtrlCreateLabel("-11", 137, 87, 17, 13)

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

    GUISetState()
    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    _opn1()
    Case $Jump2
    _opn2()
    EndSwitch
    WEnd

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

    Func _opn1()
    ShellExecute('01-'&$Input1&'-11', "", $Pfad1, "open")
    EndFunc

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

    Func _opn2()
    ShellExecute('02-'&$Input2&'-11', "", $Pfad2, "open")
    EndFunc

    [/autoit]

    4 Mal editiert, zuletzt von Fintan (7. November 2011 um 19:25) aus folgendem Grund: kongretisiert,

  • Ok danke, damit klappt es jetzt.

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    ;#RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>

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

    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2

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

    $Pfad1= "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2= "L:\G...\KIen....\AUFTRAG 2011\"

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

    GUICreate("Ordner-Jumper", 210, 120)
    If Not @compiled Then GUISetIcon('Ordner.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 15, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 15, 65, 150, 13)

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

    $Jump1= GUICtrlCreateButton("1", 155, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1=GUICtrlCreateInput("", 35, 30, 100, 20)
    GUICtrlCreateLabel("01-", 17, 32, 17, 13)
    GUICtrlCreateLabel("-11", 137, 32, 17, 13)

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

    $Jump2= GUICtrlCreateButton("2", 155, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2=GUICtrlCreateInput("", 35, 85, 100,20)
    GUICtrlCreateLabel("02-", 17, 87, 17, 13)
    GUICtrlCreateLabel("-11", 137, 87, 17, 13)

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    ShellExecute('01-'& GUICtrlRead($Input1) &'-11', "", $Pfad1, "open")
    Case $Jump2
    ShellExecute('02-'& GUICtrlRead($Input2) &'-11', "", $Pfad2, "open")
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Fintan (6. November 2011 um 11:39)

  • Ich wollte noch in beiden Inputs ermöglichen, den Input per Enter-Taste aufzurufen mit:

    [autoit]

    Dim $AccelKeys[2][2] = [["{Enter}", $Jump1], ["^{Enter}", $Jump2]]
    GUISetAccelerators($AccelKeys)

    [/autoit]


    Es wird aber nur in der $Jump1-Variable das Enter ermöglicht?
    Wenn ich eine Zahl in der $Jump2-Variable eingebe, kommt ein leeres Input vom $Jump1-Feld und sagt der Ordner kann nicht gefunden werden!?
    Kann man nur einmal das Enter definieren? In der Hilfe steht auch nichts dazu.
    Ausprobierte Varianten, die auch nicht funktionieren:

    [autoit]

    Dim $AccelKeys[2][2] = [["{Enter}", $Jump1], ["{Enter}", $Jump2]]
    Dim $AccelKeys[2][2] = [["^{Enter}", $Jump1], ["^{Enter}", $Jump2]]

    [/autoit]
    • Offizieller Beitrag

    So sollte es funzen:

    Spoiler anzeigen
    [autoit]

    #region - Timestamp
    ; 2011-11-06 22:55:13
    #endregion - Timestamp

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

    #NoTrayIcon
    ;#RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2

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

    $Pfad1 = "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    Global $hSendFocus
    GUICreate("Ordner-Jumper", 210, 120)
    If Not @Compiled Then GUISetIcon('Ordner.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 15, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 15, 65, 150, 13)

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

    $Jump1 = GUICtrlCreateButton("1", 155, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1 = GUICtrlCreateInput("", 35, 30, 100, 20)
    GUICtrlCreateLabel("01-", 17, 32, 17, 13)
    GUICtrlCreateLabel("-11", 137, 32, 17, 13)

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

    $Jump2 = GUICtrlCreateButton("2", 155, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2 = GUICtrlCreateInput("", 35, 85, 100, 20)
    GUICtrlCreateLabel("02-", 17, 87, 17, 13)
    GUICtrlCreateLabel("-11", 137, 87, 17, 13)
    Global $hReturnDummy = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($hReturnDummy, "_Enter")
    Global $Accels[1][2] = [["{ENTER}", $hReturnDummy]]
    GUISetAccelerators($Accels)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    Case $Jump2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    Case $hReturnDummy
    _Enter()
    EndSwitch
    WEnd

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

    Func _Enter()
    Switch $hSendFocus
    Case $Input1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    Case $Input2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")

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

    EndSwitch
    EndFunc ;==>_Enter

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

    Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom = $ilParam
    Local $iCode = _WinAPI_HiWord($iwParam)
    Local $hWndEdit1 = GUICtrlGetHandle($Input1)
    Local $hWndEdit2 = GUICtrlGetHandle($Input2)
    Switch $hWndFrom
    Case $hWndEdit1, $hWndEdit2;
    Switch $iCode
    Case $EN_SETFOCUS
    Switch $hWndFrom
    Case $hWndEdit1
    $hSendFocus = $Input1
    Case $hWndEdit2
    $hSendFocus = $Input2
    EndSwitch
    Case Else
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_COMMAND

    [/autoit]
  • Hey vielen Dank.

    Ich habe die Gui noch ein bisschen angepasst und sieht jetzt so aus:
    autoit.de/wcf/attachment/14535/

    Spoiler anzeigen
    [autoit]


    #NoTrayIcon
    ;#RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2

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

    $Pfad1 = "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    Global $hSendFocus
    GUICreate("Ordner-Jumper", 210, 120)
    If Not @Compiled Then GUISetIcon('Ordner.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 30, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 30, 65, 150, 13)

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

    $Jump1 = GUICtrlCreateButton("1", 130, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1 = GUICtrlCreateInput("", 68, 30, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("01-", 47, 33, 20, 13)
    GUICtrlCreateLabel("-11", 107, 33, 20, 13)

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

    $Jump2 = GUICtrlCreateButton("2", 130, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2 = GUICtrlCreateInput("", 68, 85, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("02-", 47, 88, 20, 13)
    GUICtrlCreateLabel("-11", 107, 88, 20, 13)
    Global $hReturnDummy = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($hReturnDummy, "_Enter")
    Global $Accels[1][2] = [["{ENTER}", $hReturnDummy]]
    GUISetAccelerators($Accels)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    Case $Jump2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    Case $hReturnDummy
    _Enter()
    EndSwitch
    WEnd

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

    Func _Enter()
    Switch $hSendFocus
    Case $Input1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    Case $Input2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    EndSwitch
    EndFunc ;==>_Enter

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

    Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom = $ilParam
    Local $iCode = _WinAPI_HiWord($iwParam)
    Local $hWndEdit1 = GUICtrlGetHandle($Input1)
    Local $hWndEdit2 = GUICtrlGetHandle($Input2)
    Switch $hWndFrom
    Case $hWndEdit1, $hWndEdit2;
    Switch $iCode
    Case $EN_SETFOCUS
    Switch $hWndFrom
    Case $hWndEdit1
    $hSendFocus = $Input1
    Case $hWndEdit2
    $hSendFocus = $Input2
    EndSwitch
    Case Else
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_COMMAND

    [/autoit]


    Ich wollte noch den Fokus auf das 2. Input-Feld legen, aber leider verträgt sich das ganze nicht mehr
    mit dem jetzigen Code und die Enter Funktion geht im 2. Input-Feld nicht mehr.

    [autoit]

    GUICtrlSetState($Input2, $GUI_FOCUS)

    [/autoit]


    Hatte GUICtrlSetState unter die $Input2-Variable geschrieben.

    Hier noch die Icons.
    autoit.de/wcf/attachment/14553/

    • Offizieller Beitrag

    Was willst du denn genau?
    Ich dachte bei Enter sollte das entsprechende Input den Shellexecute Befehl ausführen.
    Willst du bei Enter im 1. Input nur das 2. Focusiert haben?

  • Ich wollte einfach in beiden Inputs ermöglichen über Enter in den Ordner springen zu können.

    Also, ich starte den Ordner-Jumper, Fokus wollte ich auf den 2. Input haben,
    dann kann man über die Zahlentasten 4 Zahlen eingeben und
    mit Enter den Ordner aufrufen.

    Wenn ich zuerst mit der Maus auf den 1. Input gehe und die 4 Zahlen eingebe und Enter drücke,
    sollte es auch gleich in den Ordner springen können.

    Also in beiden die gleiche Funktion um mit Enter in den Ordner zu kommen.

    • Offizieller Beitrag

    Benutze ControlFocus und zwar erst nach GUISetState.
    Ausserdem kannst du es auch bei der Enterfunktion nach dem Shellexecute einfügen.

    Ich denke du willst es so haben:

    Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ; 2011-11-07 19:45:37
    #EndRegion

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

    #NoTrayIcon
    ;#RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2

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

    $Pfad1 = "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    Global $hSendFocus
    $hGui = GUICreate("Ordner-Jumper", 210, 120)
    If Not @Compiled Then GUISetIcon('Ordner.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 30, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 30, 65, 150, 13)

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

    $Jump1 = GUICtrlCreateButton("1", 130, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1 = GUICtrlCreateInput("", 68, 30, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("01-", 47, 33, 20, 13)
    GUICtrlCreateLabel("-11", 107, 33, 20, 13)

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

    $Jump2 = GUICtrlCreateButton("2", 130, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2 = GUICtrlCreateInput("", 68, 85, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("02-", 47, 88, 20, 13)
    GUICtrlCreateLabel("-11", 107, 88, 20, 13)
    Global $hReturnDummy = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($hReturnDummy, "_Enter")
    Global $Accels[1][2] = [["{ENTER}", $hReturnDummy]]
    GUISetAccelerators($Accels)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
    ControlFocus($hGui,"",$input2)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    Case $Jump2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    Case $hReturnDummy
    _Enter()
    EndSwitch
    WEnd

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

    Func _Enter()
    Switch $hSendFocus
    Case $Input1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    ControlFocus($hGui,"",$input2)
    Case $Input2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    EndSwitch
    EndFunc ;==>_Enter

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

    Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom = $ilParam
    Local $iCode = _WinAPI_HiWord($iwParam)
    Local $hWndEdit1 = GUICtrlGetHandle($Input1)
    Local $hWndEdit2 = GUICtrlGetHandle($Input2)
    Switch $hWndFrom
    Case $hWndEdit1, $hWndEdit2;
    Switch $iCode
    Case $EN_SETFOCUS
    Switch $hWndFrom
    Case $hWndEdit1
    $hSendFocus = $Input1
    Case $hWndEdit2
    $hSendFocus = $Input2
    EndSwitch
    Case Else
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_COMMAND

    [/autoit]
    • Offizieller Beitrag

    Du kannst das natürlich auch mit GUICtrlSetState machen. Es kommt nur darauf an, das du es an der richtigen Stelle machst.
    Wenn du nach dem Controi, direkt den Fokus setzt und ein weiteres Control erstellst, dann hat der Fokus keine Wirkung.

    Spoiler anzeigen
    [autoit]

    #Region - Timestamp
    ; 2011-11-07 20:04:30
    #EndRegion

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

    #NoTrayIcon
    ;#RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiEdit.au3>
    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2

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

    $Pfad1 = "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    Global $hSendFocus
    $hGui = GUICreate("Ordner-Jumper", 210, 120)
    If Not @Compiled Then GUISetIcon('Ordner.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 30, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 30, 65, 150, 13)

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

    $Jump1 = GUICtrlCreateButton("1", 130, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1 = GUICtrlCreateInput("", 68, 30, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("01-", 47, 33, 20, 13)
    GUICtrlCreateLabel("-11", 107, 33, 20, 13)

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

    $Jump2 = GUICtrlCreateButton("2", 130, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2011 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2 = GUICtrlCreateInput("", 68, 85, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("02-", 47, 88, 20, 13)
    GUICtrlCreateLabel("-11", 107, 88, 20, 13)
    Global $hReturnDummy = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($hReturnDummy, "_Enter")
    Global $Accels[1][2] = [["{ENTER}", $hReturnDummy]]
    GUISetAccelerators($Accels)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    Case $Jump2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    Case $hReturnDummy
    _Enter()
    EndSwitch
    WEnd

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

    Func _Enter()
    Switch $hSendFocus
    Case $Input1
    ShellExecute('01-' & GUICtrlRead($Input1) & '-11', "", $Pfad1, "open")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    Case $Input2
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    EndSwitch
    EndFunc ;==>_Enter

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

    Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom = $ilParam
    Local $iCode = _WinAPI_HiWord($iwParam)
    Local $hWndEdit1 = GUICtrlGetHandle($Input1)
    Local $hWndEdit2 = GUICtrlGetHandle($Input2)
    Switch $hWndFrom
    Case $hWndEdit1, $hWndEdit2;
    Switch $iCode
    Case $EN_SETFOCUS
    Switch $hWndFrom
    Case $hWndEdit1
    $hSendFocus = $Input1
    Case $hWndEdit2
    $hSendFocus = $Input2
    EndSwitch
    Case Else
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_COMMAND

    [/autoit]
  • Zum Kompilieren brauchts aber noch andere Includes. Habe eine Weile gerätsel, hatte schon gedacht, die Installation ist geschrottet.
    Bis ich letztendlich 'Organize Includes' benutzt habe, das hat mir die Includes eingefügt.

    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

    [/autoit]
  • Hi
    Jedes Mal wenn ein Ordner nicht vorhanden ist, kommt immer eine MSBox von Windows selber!
    Jetzt wollte ich aber eine selber erstellte nehmen, aber es kommt immer zuerst die Win-MSBox und danach dann meine MSBox!

    Wie kann man das verhindern, dass die Windows-MSBox kommt, sondern nur meine?

    Meine Script sieht mittlerweile so aus:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Ordner1.ico
    #AutoIt3Wrapper_Outfile=Ordner-2012-Jumper.exe
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Description=Ordner-Jumper für 2012
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #Include <GuiEdit.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>

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

    Local $Pfad1, $Pfad2, $Jump1, $Jump2, $Input1, $Input2
    $Pfad1 = "L:\G...\KIen....\ANGEBOT 2011\"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    Global $hSendFocus
    $hGui = GUICreate("Ordner-Jumper", 210, 120)
    If Not @Compiled Then GUISetIcon('Ordner1.ico')
    GUICtrlCreateLabel("ANGEBOTS-Nummer eingeben", 30, 10, 150, 13)
    GUICtrlCreateLabel("AUFTRAGS-Nummer eingeben", 30, 65, 150, 13)

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

    $Jump1 = GUICtrlCreateButton("1", 130, 29, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum ANGEBOTS-Ordner 2012 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input1 = GUICtrlCreateInput("", 68, 30, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("01-", 47, 33, 20, 13)
    GUICtrlCreateLabel("-12", 107, 33, 20, 13)

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

    $Jump2 = GUICtrlCreateButton("2", 130, 84, 23, 23, 0x0040)
    GUICtrlSetTip(-1, "Direkt zum AUFTRAGS-Ordner 2012 springen.")
    GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', -138, 0)
    $Input2 = GUICtrlCreateInput("", 68, 85, 35, 20)
    GUICtrlSetLimit(-1, 4)
    GUICtrlCreateLabel("02-", 47, 88, 20, 13)
    GUICtrlCreateLabel("-12", 107, 88, 20, 13)
    Global $hReturnDummy = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($hReturnDummy, "_Enter")
    Global $Accels[1][2] = [["{ENTER}", $hReturnDummy]]
    GUISetAccelerators($Accels)
    GUISetState()
    GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
    GUICtrlSetState($Input2, $GUI_FOCUS)
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    ExitLoop
    Case $Jump1
    If ShellExecute('01-' & GUICtrlRead($Input1) & '-12', "", $Pfad1, "open") = 0 Then
    MsgBox(64, "Fehlermeldung!", "Fehler! Der Ordner ist nicht da!", 5)
    EndIf
    Case $Jump2
    If ShellExecute('02-' & GUICtrlRead($Input2) & '-12', "", $Pfad2, "open") = 0 Then
    MsgBox(64, "Fehlermeldung!", "Fehler! Der Ordner ist nicht da!", 5)
    EndIf
    Case $hReturnDummy
    _Enter()
    EndSwitch
    WEnd

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

    Func _Enter()
    Switch $hSendFocus
    Case $Input1
    If ShellExecute('01-' & GUICtrlRead($Input1) & '-12', "", $Pfad1, "open") = 0 Then
    MsgBox(64, "Fehlermeldung!", "Fehler! Der Ordner ist nicht da!", 5)
    EndIf
    _GUICtrlEdit_SetSel($Input1, 0, 4)
    Case $Input2
    If ShellExecute('02-' & GUICtrlRead($Input2) & '-12', "", $Pfad2, "open") = 0 Then
    MsgBox(64, "Fehlermeldung!", "Fehler! Der Ordner ist nicht da!", 5)
    EndIf
    _GUICtrlEdit_SetSel($Input2, 0, 4)
    EndSwitch
    EndFunc ;==>_Enter

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

    Func _WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    Local $hWndFrom = $ilParam
    Local $iCode = _WinAPI_HiWord($iwParam)
    Local $hWndEdit1 = GUICtrlGetHandle($Input1)
    Local $hWndEdit2 = GUICtrlGetHandle($Input2)
    Switch $hWndFrom
    Case $hWndEdit1, $hWndEdit2;
    Switch $iCode
    Case $EN_SETFOCUS
    Switch $hWndFrom
    Case $hWndEdit1
    $hSendFocus = $Input1
    Case $hWndEdit2
    $hSendFocus = $Input2
    EndSwitch
    Case Else
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_COMMAND

    [/autoit]
  • Zeile 67

    [autoit]

    If Not FileExists ('01-' & GUICtrlRead($Input1) & '-12') Then
    MsgBox(64, "Fehlermeldung!", "Fehler! Der Ordner ist nicht da!", 5)
    Else
    ShellExecute('01-' & GUICtrlRead($Input1) & '-12', "", $Pfad1, "open")
    EndIf

    [/autoit]
  • Hm, hier ist auch noch was falsch!
    Wenn der Ordner noch vorhanden ist, wird er auch geöffnet, soweit so gut.
    Wenn der Ordner nicht mehr da ist, kommt noch die 2. MsgBox, aber dann kommt wieder die Fehler-Meldung von Windows,
    das der Ordner nicht gefunden werden kann!
    Jetzt weiß ich nicht welcher shellexecute, nach der 2.MsgBox geöffnet wird! Wo liegt da der Fehler?

    [autoit]

    $m1 = "Fehlermeldung!"
    $m2 = "Der Ordner ist nicht mehr da!"
    $m2a = "Wollen Sie im alten Ordner nachsehen?"
    $m3 = "Der Ordner ist leider auch hier nicht da!"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    $Pfad2a = "L:\G...\KIen....\alte AUFTRÄGE 2011\"

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

    Func _go2()
    If Not FileExists($Pfad2 & '02-' & GUICtrlRead($Input2) & '-11') Then
    If MsgBox(262212, $m1, $m2 & @CRLF & @CRLF & $m2a) = 7 Then
    Else
    If Not FileExists($Pfad2a & '02-' & GUICtrlRead($Input2) & '-11') Then
    MsgBox(64, $m1, $m3, 4)
    Else
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2a, "open")
    EndIf
    EndIf
    EndIf
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open")
    EndFunc

    [/autoit]
    • Offizieller Beitrag
    [autoit]

    #Region - Timestamp
    ; 2012-02-11 19:15:12
    #EndRegion

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

    $m1 = "Fehlermeldung!"
    $m2 = "Der Ordner ist nicht mehr da!"
    $m2a = "Wollen Sie im alten Ordner nachsehen?"
    $m3 = "Der Ordner ist leider auch hier nicht da!"
    $Pfad2 = "L:\G...\KIen....\AUFTRAG 2011\"
    $Pfad2a = "L:\G...\KIen....\alte AUFTRÄGE 2011\"

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

    Func _go2()
    If Not FileExists($Pfad2 & '02-' & GUICtrlRead($Input2) & '-11') Then
    If MsgBox(262212, $m1, $m2 & @CRLF & @CRLF & $m2a) = 7 Then;Bestätigung Nein
    Else; Bestätigung Ja
    If Not FileExists($Pfad2a & '02-' & GUICtrlRead($Input2) & '-11') Then; File Existiert nicht
    MsgBox(64, $m1, $m3, 4); Anzeige das File nicht exitsiert
    Return ; Hier sollte die Funktion verlassen werden, da sonst Zeile 24 ausgeführt wird
    Else; Alles OK, FileExistiert
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2a, "open")
    Return ; Hier sollte die Funktion verlassen werden, da sonst Zeile 24 ausgeführt wird
    EndIf
    EndIf
    EndIf
    ShellExecute('02-' & GUICtrlRead($Input2) & '-11', "", $Pfad2, "open"); Diese Zeile darf nur ausgeführt werden, wenn die Abfrage aus Zeile 13 = true ist.
    EndFunc

    [/autoit]