Ausführen-Feld in GUI einbauen?

  • ich will ein input-feld machen, das das "Ausführen"-Feld (Start->Ausführen) in ein GUI einbindet!

    könnt ihr mir helfen?

    hier der Code für die GUI, den ich schon gemacht habe:

    Spoiler anzeigen
    Code
    $run_input=String("Ausführen!")
    $run_inputfield=GUICtrlCreateInput($run_input, 10, 30, 100, 20)
    $run_button=GUICtrlCreateButton("Ready", 115, 30, 100, 20)


    wie muss ich danach weitermachen?
    hab schon in der hilfe nachgesehen, hilft mir aber nicht wirklich weiter... :hm:

    • Offizieller Beitrag

    Hallo!

    Hab dir mal ein Skript geschrieben, was der Ausführen box 1:1 ähnelt:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("Ausführen", 347, 153, 268, 451, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS), 0)
    $Label1 = GUICtrlCreateLabel("Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetressource an.", 54, 18, 273, 29)
    $Label2 = GUICtrlCreateLabel("Ö&ffnen:", 11, 63, 38, 16)
    $Icon1 = GUICtrlCreateIcon("C:\WINDOWS\system32\shell32.dll", 25, 11, 18, 32, 32, BitOR($SS_NOTIFY,$WS_GROUP))
    $Combo1 = GUICtrlCreateCombo("ACombo1", 57, 63, 278, 21)
    $Button1 = GUICtrlCreateButton("OK", 54, 114, 90, 23, 0)
    $Button2 = GUICtrlCreateButton("Abbrechen", 150, 114, 90, 23, 0)
    $Button3 = GUICtrlCreateButton("&Durchsuchen...", 246, 114, 90, 23, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Run(GuiCtrlRead($Combo1))
    EndSwitch
    WEnd

    [/autoit]

    Mfg Spider

    • Offizieller Beitrag

    Was genau willst du machen?
    Befehlszeile in Inputfeld einlesen und dann das Original Windows "Programme -Ausführen" öffnen und den Befehl übergeben?

    Dein bisheriger Code stimmt auch nicht - du hast keine GUI erstellt und falsche Zuweisung.
    Hier mal korrigiert:

    [autoit]

    $GUI = GUICreate("Meine GUI", 400, 250, -1, -1)
    $run_input="Ausführen!"
    $run_inputfield=GUICtrlCreateInput($run_input, 10, 30, 100, 20)
    $run_button=GUICtrlCreateButton("Ready", 115, 30, 100, 20)

    [/autoit]

    Sag mal, was du genau willst.

    Edit:
    Di Spinne war wieder schneller - Sauerei. ;)

  • hab jetzt das script:


    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    GUICreate("Run",225,220)

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

    $run_input="Bitte EXE-Name eingeben!"
    $run_inputfield=GUICtrlCreateInput($run_input, 10, 30, 100, 20)
    $run_button=GUICtrlCreateButton("Ausführen", 115, 30, 100, 20)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $msg=GUIGetMsg()

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

    Select

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

    Case $msg=$run_button
    Run($run_input)

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

    EndSelect

    WEnd

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

    wenn ich jetzt z.B. "iexplore.exe" in das feld im skript eingebe, steht nur da, dass "iexplore.exe nicht gefunden werden konnte" oder so ähnlich

    wenn ich aber unter Start->Ausführen iexplore.exe eingebe, öffnet sich der Internet-Explorer oder z.B. bei calc.exe der Taschenrechner

    warum geht das mit dem "Run()"-Befehl nicht?

  • hab ich gelesen, aber ich mein was anderes... ;)

    aber mit dem skript kann ich nur dateien/EXEn ausführen, die im ordner vom skript liegen, wenn ich z.B. den internet-explorer ausführen möchte, muss ich "C:\Programme\Internet Explorer\iexplore.exe" oder "C:\Windows\system32\cmd.exe" eingeben...

    im ausführen-dialog von windows muss ich nur iexplore.exe bzw. cmd.exe eingeben...

    ich hoffe ich konnte das gut erklären :lol:

    :hm: :hm: :hm:

    • Offizieller Beitrag

    Folgendes wäre möglich:
    Die Umgebunsvariable PATH auslesen (EnvGet) und dann mit jedem darin enthaltenen Pfad + Eingabe test, ob es die Datei gibt (FileExists). Wenn ja, starten, sonst weitertesten, am Ende einfach ausführen was drin steht.

    peethebee

    • Offizieller Beitrag

    Hallo!

    Iexplorer ist nur eine ausnahme! Cmd z.b. läuft perfekt auch ohne pfad!

    Hier nun das "vollkommende" script :rolleyes: :

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("Ausführen", 347, 153, 268, 451, BitOR($WS_SYSMENU, $WS_CAPTION, $WS_POPUPWINDOW, $WS_BORDER, $WS_CLIPSIBLINGS), 0)
    $Label1 = GUICtrlCreateLabel("Geben Sie den Namen eines Programms, Ordners, Dokuments oder einer Internetressource an.", 54, 18, 273, 29)
    $Label2 = GUICtrlCreateLabel("Ö&ffnen:", 11, 63, 38, 16)
    $Icon1 = GUICtrlCreateIcon("C:\WINDOWS\system32\shell32.dll", 25, 11, 18, 32, 32, BitOR($SS_NOTIFY, $WS_GROUP))
    $Combo1 = GUICtrlCreateCombo("cmd", 57, 63, 278, 21)
    $Button1 = GUICtrlCreateButton("OK", 54, 114, 90, 23, 0)
    $Button2 = GUICtrlCreateButton("Abbrechen", 150, 114, 90, 23, 0)
    $Button3 = GUICtrlCreateButton("&Durchsuchen...", 246, 114, 90, 23, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Button2
    Exit
    Case $Button1
    $run = GUICtrlRead($Combo1)
    If $run = "iexplorer.exe" Or $run = "iexplorer" Then $run = "C:\Programme\Internet Explorer\iexplore.exe"
    If Not FileExists($run) Then
    MsgBox(16,"","Datei existiert nicht!")
    ContinueLoop
    EndIf

    If StringRight($run, 3) = "EXE" Or StringRight($run, 3) = "BAT" Or StringRight($run, 3) = "COM" Or StringRight($run, 3) = "PIF" Then
    Run($run)
    Else
    Run(@ComSpec & ' /c "' & $run & '"', '', @SW_HIDE)
    EndIf
    Case $Button3
    $fod = FileOpenDialog("", "", "alle(*.*)")
    If @error Then ContinueLoop
    GUICtrlSetData($Combo1,$fod,$fod)
    EndSwitch
    WEnd

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

    mfg spider

  • ich versteh, was du meinst aber um es umzusetzen hab ich noch zu wenig erfahrung, ich blick mit dem EnvGet nicht durch, obwohl ich in der Hilfe nachgesehen hab...

    EDIT:
    Thx an gtaspider!

    EDIT2:

    funzt leider immer noch nicht richtig
    bei cmd.exe und calc.exe sagt er immer nur "Datei existiert nicht"

    und bei iexplore.exe heißt es:
    ==> Unable to execute the external program.:
    Run($run, @ScriptDir & "\NT")
    Der Verzeichnisname ist ungültig.

    2 Mal editiert, zuletzt von alexirsi (1. Oktober 2006 um 17:55)

    • Offizieller Beitrag

    Dann sende es an das Original "Ausführen"-Fenster. Zwar nicht so elegant, aber funktioniert sicher:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    $Form1 = GUICreate("AForm1", 551, 104, 192, 125)
    GUICtrlCreateLabel("Befehl (z.B. 'calc.exe')", 48, 35, 114, 17)
    $Input1 = GUICtrlCreateInput("", 176, 32, 161, 21)
    $Button1 = GUICtrlCreateButton("Ausführen", 376, 32, 123, 21, 0)
    GUISetState(@SW_SHOW)
    While 1
    $msg = GuiGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $Button1
    $befehl = GUICtrlRead($Input1)
    Send("#r")
    WinWaitActive("Ausführen")
    Send($befehl)
    Send("{ENTER}")
    EndSelect
    WEnd
    Exit

    [/autoit]
  • also ich weiss nicht was das programm bringen soll. da ist doch "Start/Ausführen" die bessere lösung.

    gut, zum lernen in autoit ist es okay, aber ansonsten sehe ich da nicht was an dem programm komfortabel sein sollte, da eh nur der path durchsucht wird und der rest aussen vor bleibt ohne der angabe des kompletten pfads.

    gruss exberliner

    • Offizieller Beitrag

    Hi,

    hilft das?

    [autoit]

    #include <GUIConstants.au3>
    Opt("RunErrorsFatal", 0)

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

    $GUI = GUICreate("Ausführen ", 551, 104, 192, 125)
    GUICtrlCreateLabel("Befehl (z.B. 'calc')", 48, 35, 114, 17)
    $text = GUICtrlCreateInput("", 176, 32, 161, 21)
    $ausfuehren = GUICtrlCreateButton("Ausführen", 376, 32, 123, 21, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $ausfuehren
    Switch GUICtrlRead($text)
    Case "iexplore"
    Run(@ProgramFilesDir & "\Internet Explorer\iexplore.exe")
    Case Else
    Run(GUICtrlRead($text) & ".exe", @WindowsDir)
    EndSwitch
    EndSelect
    WEnd
    Exit

    [/autoit]

    So long,

    Mega

  • dankeschön das ist 1a !!!

    :klatschen: :klatschen: :klatschen:

    EDIT:
    Und wenn man es so macht, dann ist es egal ob man nun "calc.exe" oder nur "calc" eingibt:

    [autoit]


    #include <GUIConstants.au3>
    Opt("RunErrorsFatal", 0)

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

    $GUI = GUICreate("Ausführen ", 551, 104, 192, 125)
    GUICtrlCreateLabel("Befehl (z.B. 'calc')", 48, 35, 114, 17)
    $text = GUICtrlCreateInput("", 176, 32, 161, 21)
    $ausfuehren = GUICtrlCreateButton("Ausführen", 376, 32, 123, 21, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $GUI_EVENT_CLOSE
    ExitLoop
    Case $msg = $ausfuehren
    Switch GUICtrlRead($text)
    Case "iexplore"
    Run(@ProgramFilesDir & "\Internet Explorer\iexplore.exe")
    Case Else
    Run(GUICtrlRead($text), @WindowsDir)
    EndSwitch
    EndSelect
    WEnd
    Exit

    [/autoit]

    Einmal editiert, zuletzt von alexirsi (1. Oktober 2006 um 21:11)