Entwickler-Ecke
Windows API - Problem mit FindWindow/ShellExecute
pHaRyNx - Do 27.03.08 20:04
Titel: Problem mit FindWindow/ShellExecute
hallo.
ich habe leider ein problem. ich hab hier schon gesucht, aber nichts gefunden, was in diese richtung geht. deshalb hier das problem:
ich übergebe via shellexecute einen befehl an eine datei. diese für diesen befehl aus (das dauert ein paar sekunden) und dann schließt sich die datei automatisch wieder.
hier der aufruf (etwas vereinfacht):
Delphi-Quelltext
1:
| ShellExecute(Application.Handle,'open',pCHAR('lame.exe'),PCHAR('-- parameter'),nil,SW_SHOW); |
jetzt möchte ich überprüfen, wann sich diese date wieder schließt, um den nächsten befehl zu übergeben. als hobbyprogrammierer ;) hab ich natürlich einen timer genommen, der alle 2 sekunden überprüft, ob sich die datei schon geschlossen hat.
sieht ungefähr so aus:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled:=False; if FindWindow(NIL,PCHAR('c:\ordner\lame.exe'))=0 then naechsterbefehl...; |
das klappt leider nicht. ich hab ehrlich gesagt schon etwas rumgetüftelt und bei einer früheren programmversion hats auch so oder ähnlich geklappt. ich weiß leider nicht mehr wie und die alte version hab ich verloren :(
weiß jemand, wie ich überprüfen kann, ob sich die datei lame.exe geschlossen hat ???
ich wäre euch sehr dankbar, wenn ihr mir helfen könntet.
mfg pHaRyNx
Narses - Do 27.03.08 20:07
Moin!
Ich würde das anders machen: Den Prozess mit CreateProcess starten und dann das Handle prüfen.
STARTEN PROGRAMM ENDE WARTEN :idea:
cu
Narses
pHaRyNx - Do 27.03.08 20:38
mh, ok, danke. ich habe mir jetzt diese prozedur gestohlen :D :
http://www.delphi-library.de/viewtopic.php?t=15943
schön und gut, klappt auch mit den parametern übergeben, und dem warten. aber die anwendung, die jetzt geöffnet wird, wird nur oben links ganz klein angeizeigt, sodass man den fensterinhalt nicht sehen kann. kann man das irgendwie ändern, dass das fenster in normalgröße wie immer angezeigt wird ?
EDIT
gibt es keine möglichkeit, das mit findwindow zu machen ? ich blick bei der prozedur oben nicht durch und hab auch so gut wie keine erfahrung mit api-programmierung.
na, also ich hab ne möglichkeit gefunden mit SW_Maximized kann man das fenster groß anzeigen (ist zwar was hässlich, aber egal.) aber der fensterinhalt des eigentlichen programms scheint hierbei eingefroren zu sein...
EDIT 2
loool, was ist das denn????!!! jetzt gehts auf einmal mit findwindow (aber nur weil ich das programm 2mal geöffnet hatte)
EDIT 3
ohhh, jetzt gehts wieder nicht, was soll das denn ??!?!?!?!??1111
pHaRyNx - Sa 29.03.08 17:30
danke für den tipp. es funktioniert jetzt aber auch mit findwindow. ich hatte anderweitig einen fehler im quelltext.
danke für euere hilfe. ihr habt mir trotzdem geholfen.
mfg pHaRyNx
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!