Entwickler-Ecke
Windows API - überprüfen ob fremdes programm geschlossen ist
patrick - Mo 14.10.02 21:33
Titel: überprüfen ob fremdes programm geschlossen ist
wie und womit mach ich das am besten?
ich denk da an was spanisches
OLE (ha schenkelklopfer :nut: :rofl: :nut: )
THX
Anonymous - Mo 14.10.02 21:41
Ganz einfach. Wenn du das fremde Programm nicht auf dem Monitor sehen kannst, dann ist es wahrscheinlich geschlossen :D
Cashels - Mo 14.10.02 21:56
Hi Patrick,
die Funktion FindWindow übergibt dir das Handle des zu suchenden Fensters. Ist es null, wurd nix gefunden, also ist die Anwendung geschlossen.
Quelltext
1:
| FindWindow (nil,PChar(Fenstertitel)) ; |
Wobei Fenstertitel, ja, den Titel des Fensters angibt :wink:
Gruss,
tom
Delete - Di 15.10.02 08:20
Und ich sage es schon wieder: so ein Fenstertitel kann sich ändern. Aus welchen Gründen auch immer. Besser ist es daher nach dem Klassennamen zu suchen. Und das ist der erste Parameter bei "findwindow".
So ein Fenstertitel lässt sich ja auch programmgesteuert ändern.
Delete - Di 15.10.02 08:32
Popov hat folgendes geschrieben: |
Ganz einfach. Wenn du das fremde Programm nicht auf dem Monitor sehen kannst, dann ist es wahrscheinlich geschlossen :D |
Und was ist mit den Programmen, die ohne Fenster im Hintergrund laufen?
Delete - Di 15.10.02 11:44
Luckie hat folgendes geschrieben: |
Und was ist mit den Programmen, die ohne Fenster im Hintergrund laufen? |
Das ist der Pfau-Modus, Luckie - Kopf in Sand; und was man nicht sieht, ist auch nicht da. Aber ich glaube, popov hatte das mehr als Spaß gemeint.
patrick - Di 15.10.02 12:31
@Popov wenn das so einfach dann erzähl das mal meinem programm :idea: :P
aber im ernst
ich brauch den befehl um ein anderes programm zu öffnen nachdem das erste programm beendet wurde.
hilft das irdendwie weiter :?:
Delete - Di 15.10.02 12:55
Zitat: |
hilft das irdendwie weiter |
Tja, dir offenbar nicht. :twisted: Du hast doch die Lösungen. Du prüfst, ob das Fenster vorhanden ist - z.B. timer-gesteuert - und wenn nicht, dann startest du das andere Programm.
Oder du schaust mal in die Sparte "
Dateizugriff [
http://www.auq.de/viewtopic.php?t=3095]", bzw.
hier [
http://www.delphipraxis.net/viewtopic.php?t=1199]. Dort findest du einen Befehl, mit dem du Programme starten und auf deren Ende warten kannst! Logischerweise, wenn das Programm dann beendet ist, kannst du das nächste starten usw.
Anonymous - Di 15.10.02 16:24
@patrick
Ich hab deswegen meine Antwort gegeben, weil ich nicht wußte was (oder genauer wie) du da machen willst. Verwirt hat mich da das Wort OLE. Wenn es ein normales Programm ist, dann kommst du um FindWindow (oder vergleichbares) nicht rum. Wenn es sich um ein OLE-Automation fähiges Programm handelt, dann gibt es den Weg über CreateOleObject. Das funktioniert so: Läuft das Programm, dann wird eine Verbindung zu diesem Programm hergestellt. Läuft das Programm momentan nicht, dann startet Windows das Programm selbst und stellt dann die Verbindung her.
Um das etwas genauer zu beschreiben muß ich wissen was für ein Programm das ist.
patrick - Di 15.10.02 20:15
ich habs ja auch scherzhaft gemeint :wink:
danke für die antworten
THX
patrick - Do 31.10.02 22:10
ich geb mich jetzt mal ganz fantasielos: :roll: aber wie bau ich den befehl in eine if schleife ein.
mit true und false is ja net viel da der ausgabewert in hwnd ist
und damit kann ich gar nichts anfangen :oops:
Delete - Do 31.10.02 22:25
Man kann if nicht nur au´f TRUE oder FALSE prüfen. :roll:
patrick - Fr 01.11.02 02:10
das weiß ich ...
so n newbie bin ich nun auch wieder net. : 8)
aber was für ein wert denn ausgegeben wird, wenn das fenster vorhanden bzw nicht vorhanden ist, das weiß ich nicht. :(
kannst du mir einfach eine fertige if abfrage schreiben?? :?
Delete - Fr 01.11.02 08:54
Luckie hat folgendes geschrieben: |
Man kann if nicht nur au´f TRUE oder FALSE prüfen. |
Gib mir mal ein Gegenbeispiel, Luckie. Ich stehe irgendwie auf dem Schlauch bei dieser Behauptung und sage im Moment, dass man -strenggenommen!- bei
if/
then/
else nur prüfen kann, ob eine Bedingung zutrifft (true) oder nicht (false). Welche Variablentypen du dafür heranziehst, das mag egal sein, aber letztlich führt immer alles zu einem boolschen Vergleich:
Quelltext
1: 2:
| Wenn (szName = 'Mathias') Dann Wenn (szIrgendeineZahl = 127) Dann |
patrick hat folgendes geschrieben: |
so n newbie bin ich nun auch wieder net.
(...)
kannst du mir einfach eine fertige if abfrage schreiben?? |
Dadurch begreifst du es aber nicht, und müsstest -wenn du mal wieder vor dem selben Problem stehst- wieder nachschauen oder wieder nachfragen.
Delete - Fr 01.11.02 14:09
MathiasSimmack hat folgendes geschrieben: |
Luckie hat folgendes geschrieben: | Man kann if nicht nur au´f TRUE oder FALSE prüfen. |
Gib mir mal ein Gegenbeispiel, Luckie. Ich stehe irgendwie auf dem Schlauch bei dieser Behauptung und sage im Moment, dass man -strenggenommen!- bei if/then/else nur prüfen kann, ob eine Bedingung zutrifft (true) oder nicht (false). |
Ja du hast natürlich recht. Aber er war so festgefahren mit seinem TRUE/FALSE, dass ich ihm damit sagen wollte dass man auch was mit if auf seinen Wahrheitgehalt prüfen kann, was nicht nur TRUE/FALSE zurückliefert, sondern auch Werte wie null oder ungleich null.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!