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!
Programm.exe in einem AutoIt fenster ausführen
-
- [ offen ]
-
nudelholz -
14. Oktober 2008 um 12:04 -
Geschlossen -
Erledigt
-
-
du meinst innerhalb einer autoit GUI ?
-
Ja, das würde mir wirklich weiterhelfen !
-
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 ! -
Also falls es um ein Konsolenprogramm geht kannst du dieses Codebeispiel benutzen:
ipconfig -
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
-
Danke @all
schade, habe ich mir wirklich einfacher vorgestellt....
-
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....
-
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
-
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......
-
Hoffe daß es das ist, was du gesucht hast:
1) einfaches Beispiel mit Notepad.exe
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayIconDebug",1)$hGui = GUICreate("Test GUI", 320, 240)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $hGui)$hPid=Run(@SystemDir & '\notepad.exe',"", @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]
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)While GUIGetMsg()<>-3
[/autoit] [autoit][/autoit] [autoit]
Sleep(1)
WEndFunc OnAutoItExit()
[/autoit]
ProcessClose($hPid)
EndFunc2) Beispiel mit SndRec32.exe, wobei teilweise Controls ausgeblendet bzw. verschoben wurden
Spoiler anzeigen
[autoit]#include <WindowsConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
Opt("TrayIconDebug",1)$hGui = GUICreate("Test GUI", 380, 380)
[/autoit] [autoit][/autoit] [autoit]
GUISetState(@SW_HIDE, $hGui)$hPid=Run(@SystemDir & '\sndrec32.exe /play "' & @WindowsDir & '\Media\tada.wav"',"", @SW_HIDE)
[/autoit] [autoit][/autoit] [autoit]
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)WinMove($hChild, "", -6, -40 ,400,450)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState(@SW_SHOW, $hGui)
[/autoit] [autoit][/autoit] [autoit]
WinSetState($hChild,"",@SW_SHOW)While GUIGetMsg()<>-3
[/autoit] [autoit][/autoit] [autoit]
Sleep(1)
WEndFunc OnAutoItExit()
[/autoit]
ProcessClose($hPid)
EndFuncIch 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 garnichtAlso hat sich doch alles geklärt
-
- Offizieller Beitrag
Funktioniert bestens bei mir.
Ich muss eukalyptus aber eines vorwerfen:
Wieso hast du uns das nicht früher gesagt?Coole Sache!
peethebee
-
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