Autor Beitrag
pHaRyNx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 94

win 95, win 2000, win xp, VISTA, Ubuntu 8.04
Delphi 7 PE
BeitragVerfasst: Do 27.03.08 20:04 
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):
ausblenden 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:

ausblenden 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...;
// c:\ordner\lame.exe steht in der titelleiste der ausgeführten datei


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


Zuletzt bearbeitet von pHaRyNx am Sa 29.03.08 17:42, insgesamt 1-mal bearbeitet
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 27.03.08 20:07 
Moin!

Ich würde das anders machen: Den Prozess mit CreateProcess starten und dann das Handle prüfen. Suche in: Delphi-Forum, Delphi-Library STARTEN PROGRAMM ENDE WARTEN :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
pHaRyNx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 94

win 95, win 2000, win xp, VISTA, Ubuntu 8.04
Delphi 7 PE
BeitragVerfasst: Do 27.03.08 20:38 
mh, ok, danke. ich habe mir jetzt diese prozedur gestohlen :D : www.delphi-library.d...iewtopic.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
Dezipaitor
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 220



BeitragVerfasst: Fr 28.03.08 17:14 
du kannst auch ShellExecuteEx verwenden und dann auf den Prozess warten. Die Funktion liefert das Prozesshandle in hProces zurück. Einfach WaitForSingleObject damit verwenden.

_________________
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: blog.delphi-jedi.net = JEDI API LIB & Windows Security Code Library (JWSCL)
pHaRyNx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 94

win 95, win 2000, win xp, VISTA, Ubuntu 8.04
Delphi 7 PE
BeitragVerfasst: 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