AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Mitkriegen wann eine andere Anwendung geschlossen wird?

Mitkriegen wann eine andere Anwendung geschlossen wird?

Ein Thema von phlux · begonnen am 3. Aug 2005 · letzter Beitrag vom 4. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#1

Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 16:37
Hallo!

Mein Programm soll mit kriegen, wann eine x-beliebige von mir festgelegte Anwendung geschlossen wird, weiß jemand wie ich das realisieren kann?
Edit: Das einzige was mir/der Anwendung bekannt ist, ist ein Handle auf ein Fenster... falls es hilft

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#2

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 17:08
du könntest z. b. regelmäßig überprüfen ob das fenster noch da ist (FindWindow oder GetWindowText).
hierzu: http://www.swissdelphicenter.ch/de/showcode.php?id=327

ich glaube eine andere möglichkeit wäre einen hook auf die entsprechende anwendung zu setzen. damit kenne ich mich aber nicht aus.
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#3

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 17:35
danke für den link, weiß zufällig jemand wie das mit dem hook geht? (möcht nicht zig timer laufen lassen, wobei sich da dann eh threads wohl eher eignen würden)

mfg phlux
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#4

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 17:46
MSDN-Library durchsuchenSetWindowsHookEx() mit MSDN-Library durchsuchenWH_CALLWNDPROCRET aufrufen und auf WM_DESTROY, WM_ENDDIALOG, WM_CLOSE usw. testen.

Rein theoretisch sollte WM_CLOSE allein auch ausreichen.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 17:55
Ein WH_SHELL Hook sollte es auch koennen.
Globale Hooks (notwendigerweise in DLLs) sind allerdings kompliziert, da man den Hook-Handle so aufheben muss das er in allen Instanzen der DLL zugreifbar ist.
Eine globale Variable in Delphi ist da nicht gut genug.
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#6

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 19:16
Wie krieg ich denn dann die ThreadId raus die ich als letzten Parameter von SetWindowsHookEx() übergeben muss? Ich nehme an, dass es die "Id" von der Anwendung sein muss die ich hooken will oder?
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 19:18
Zitat von phlux:
Wie krieg ich denn dann die ThreadId raus die ich als letzten Parameter von SetWindowsHookEx() übergeben muss? Ich nehme an, dass es die "Id" von der Anwendung sein muss die ich hooken will oder?
MSDN-Library durchsuchenGetCurrentThreadId() vielleicht?
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#8

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 22:34
Gibt das nicht die ID der eigenen Anwendung zurück?
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 3. Aug 2005, 22:41
Zitat von phlux:
Gibt das nicht die ID der eigenen Anwendung zurück?
Ähem ja. Wo ist denn dabei dein Problem? Willste eine andere Thread-ID?

Zitat:
[in] Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread.
... kannst also auch gern 0 nehmen.
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#10

Re: Mitkriegen wann eine andere Anwendung geschlossen wird?

  Alt 4. Aug 2005, 09:37
Zitat von Olli:
Ähem ja. Wo ist denn dabei dein Problem? Willste eine andere Thread-ID?
Richtig, wie in der Fragestellung formuliert: _andere_ Anwendung

Zitat von Olli:
Zitat:
[in] Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads running in the same desktop as the calling thread.
... kannst also auch gern 0 nehmen.
Okay wenn ich 0 nehme hooke ich alle threads, wie finde ich dann heraus welcher Thread der passende der Anwendung ist? bitte jetzt nicht wieder mit der threadid kommen kann ich eventuell herausfinden welches fenster zu welchem thread gehört?
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz