Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Externes von mir gestartes Programm beenden? Hilfe!

  Alt 8. Jan 2004, 13:03
Das Problem besteht darin, dass es mehrere Top-Level-Fenster zu einem Prozess geben kann. Ein "leeres" Delphi-Programm hat bspw ein Fenster der Klasse TApplication und eins der Klasse TForm1. Es ist also unbedingt soetwas ähnliches wie eine "Schleife" notwendig, um das Problem zu lösen.

Wenn Du einmal in der Delphi Online-Hilfe (OH) den Begriff EnumWindows nachschlägst, sollte die Hilfedatei der Windows-API (Bestandteil des PSDK) gezeigt werden und es ist zu erkennen, dass diese Funktion zwei Parameter erwartet, von der der erste eine sog. CallBack-Funktion ist:
Zitat:
Points to an application-defined callback function. For more information, see the EnumWindowsProc callback function.
Eine CallBack-Funktion ist soetwas ähnliches wie eine Schleife (genauer: Bei Google sucheninternal iterator pattern) und ist in anderen Programmiersprachen verbreiteter. Beim Einsatz von CallBack-Funktionen wird der Gedanke des Zuständigkeitsprinzips verfolgt: Der Iterator (hier: EnumWindows) "weiß", wie man an die Elemente "herankommt" (hier: Die Handles der Top-Level-Fenster) und der Client (hier: Dein Programm, genauer die CallBack-Funktion deines Programms) weiß, was mit diesen Elementen getan werden soll. Auf diese Weise lässt sich EnumWindows für viele Zwecke Einsetzen, weil sie von der tatsächlichen Logik entkoppelt ist, ohne dass der Client eigene Schleife programmieren muss (zB auf der Basis von GetWindow).

Dieser Absatz, die Hilfetexte zu EnumWindowsProc sowie das vorherige Posting mit dem Gedanken, welche Logik nun in der CallBack-Funktion enthalten sein könnte, helfen Dir vielleicht schon weiter...
gruß, choose
  Mit Zitat antworten Zitat