Programm.exe in einem AutoIt fenster ausführen

  • Erstmal HALLO, ich habe eine Frage: Kann ich ein Programm.exe in einem AutoIt fenster ausführen? Wenn ja, würde ich mich über eine TIP sehr freuen!

  • du meinst innerhalb einer autoit GUI ?

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Ich versteh deine Frage nicht.
    Willst du beim drücken auf einen Button "Programm.exe" ausführen oder wie oder was?

  • soweit ich verstanden habe soll ein anderes Programm innerhalb der GUI von Autoit angezeigt werden.
    Ich denke das funktioniert nicht einfach mit so out of the box! Das ist ziemlich sicher ganz schön Aufwändig !

    ---
    In "Independence Day" konnten die Windows-Erdcomputer problemlos mit denen der Außerirdischen kommunizieren. Was sagt uns das über unseren lieben Bill Gates? :D
    ---

  • Ansonsten darfst du dich wohl mit ObjektOrientiertem Programmieren anfreunden... Das Programm sollte dies halt auch unterstützen... also ich weiss z.b. das es mit dem Windoof Mediaplayer funktioniert... gab hier auch schon ein paar beispiele, leider find ich sie im augenblick nicht :( :S

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Ich hab nur eine Idee, weis aber nicht ob es realisierbar ist:

    1. Run EXE mit @SW_HIDE (dasmit sieh man es nicht)
    2. Irgendwie regelmäßig einen Snapshot des Fensters anfertigen und in ein Autoit-Objekt einfügen. ( ? PrintWindow aus "user32")

    Aber ist halt nur eine Idee....

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    2 Mal editiert, zuletzt von Micha_he (14. Oktober 2008 um 15:51)

  • Es geht!

    ich hab das in einem meiner Projekte gemacht.

    Du mußt dich nur etwas gedulden, bis ich von der Arbeit daheim bin, dann kann ich das posten!

    lgE

    Hi, da warte ich auch gerne etwas länger...... :D

  • Hoffe daß es das ist, was du gesucht hast:

    1) einfaches Beispiel mit Notepad.exe

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    Opt("TrayIconDebug",1)

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

    $hGui = GUICreate("Test GUI", 320, 240)
    GUISetState(@SW_HIDE, $hGui)

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

    $hPid=Run(@SystemDir & '\notepad.exe',"", @SW_HIDE)
    WinWait("[CLASS:Notepad]", "", 5)
    $hChild = WinGetHandle("[CLASS:Notepad]", "")
    $NEXSTYLE = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hChild, "int", 236)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hChild, "int", 236, "int", BitOR($NEXSTYLE[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hChild, "hwnd", $hGui)
    WinMove($hChild, "", 0, 0,320,240)
    GUISetState(@SW_SHOW, $hGui)
    WinSetState($hChild,"",@SW_SHOW)

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

    While GUIGetMsg()<>-3
    Sleep(1)
    WEnd

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

    Func OnAutoItExit()
    ProcessClose($hPid)
    EndFunc

    [/autoit]

    2) Beispiel mit SndRec32.exe, wobei teilweise Controls ausgeblendet bzw. verschoben wurden

    Spoiler anzeigen
    [autoit]

    #include <WindowsConstants.au3>
    Opt("TrayIconDebug",1)

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

    $hGui = GUICreate("Test GUI", 380, 380)
    GUISetState(@SW_HIDE, $hGui)

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

    $hPid=Run(@SystemDir & '\sndrec32.exe /play "' & @WindowsDir & '\Media\tada.wav"',"", @SW_HIDE)
    WinWait("[CLASS:SoundRec]", "", 5)
    $hChild = WinGetHandle("[CLASS:SoundRec]", "")
    $NEXSTYLE = DllCall("user32.dll", "int", "GetWindowLong", "hwnd", $hChild, "int", 236)
    DllCall("user32.dll", "int", "SetWindowLong", "hwnd", $hChild, "int", 236, "int", BitOR($NEXSTYLE[0], $WS_EX_MDICHILD))
    DllCall("user32.dll", "int", "SetParent", "hwnd", $hChild, "hwnd", $hGui)

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

    WinMove($hChild, "", -6, -40 ,400,450)
    ControlHide($hChild,"","shadowframe1")
    ControlHide($hChild,"","noflickertext1")
    ControlHide($hChild,"","noflickertext2")
    ControlHide($hChild,"","shadowframe2")
    ControlHide($hChild,"","noflickertext3")
    ControlHide($hChild,"","noflickertext4")
    ControlHide($hChild,"","msctls_trackbar321")
    ControlMove($hChild,"","wavedisplay1",150,150)
    ControlMove($hChild,"","Button1",10,10,50,50)
    ControlMove($hChild,"","Button2",70,10,50,50)
    ControlMove($hChild,"","Button3",130,10,50,50)
    ControlMove($hChild,"","Button4",190,10,50,50)
    ControlMove($hChild,"","Button5",250,10,50,50)

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

    GUISetState(@SW_SHOW, $hGui)
    WinSetState($hChild,"",@SW_SHOW)

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

    While GUIGetMsg()<>-3
    Sleep(1)
    WEnd

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

    Func OnAutoItExit()
    ProcessClose($hPid)
    EndFunc

    [/autoit]

    Ich habe das z.b. mit VirtualDub gemacht, damit ich das VirtualDub-Fenster während einer Videoaufnahme disablen kann, man das Fenster aber trotzdem verschieben kann...

    lgE

  • Das mich auch interessiert hab ich mal beide Scripte getestet mit einem negativen Ausgang :(

    Bei dem ersten wird Notepad geöffnet dann verschoben ins obere linke Eck, dann öffnet sich die blanke GUI(in der Mitte vom Bildschirm).

    Beim zweiten Script wird sogar nur die GUI gestartet :(

    EDIT:
    Ich bin so blöd... ich hab garnicht gesehen das eukalyptus die klasse vom notepad holt, ich benutze Notepad2, kein wunder das es nicht funktioniert :pinch:
    Zum zweiten: Die datei sndrec32.exe hab ich garnicht

    Also hat sich doch alles geklärt :)

    Einmal editiert, zuletzt von bluelamp (14. Oktober 2008 um 20:03)

  • Lol - und ich dachte, bei Notepad und SndRec32 habe ich 2 Programme gewählt, die auf jedem WindowsPC vorhanden sind...
    Und die Class hab ich verwendet, weil ich dachte, so unabhängig von der Betriebssystem-Sprache zu sein (Untitled vs. Unbenannt ;))

    Tja, ich wollte das damals auch tatsächlich posten, hab aber leider vergessen - sorry!

    lgE