Einzelnen Beitrag anzeigen

choose

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

Re: Externes von mir gestartes Programm beenden? Hilfe!

  Alt 8. Jan 2004, 12:30
Hallo firefighter,

ein herzliches Wilkommen zur Delphi-PRAXiS!

Wenn ich Dich richtig verstanden habe, möchtest Du die Handles aller Top-Level-Fenster zu einem bestimmten Process ermitteln.
Leider ist mir keine direkte API-Funktion hierzu bekannt, allerdings kannst Du mit EnumWindows über alle Top-Level-Fenster iterieren und dank GetWindowThreadProcessId auch die jeweilige ProcessID ermitteln. Weil die CallBack-Funktion EnumWindowsProc einen frei verwendbaren Paramter entgegennehmen kann, bietet es sich an, hier die ProcessID zu übergeben, so dass direkt in diese CallBack-Funktion an alle diejenigen Fenster die Botschaft WM_CLOSE geschickt werden könnte, deren ProcessID mit der übergebenen übereinstimmen.

Das Prinzip von CallBack-Funktionen und API-Calls iA ist wiederkehrend, so dass es wert ist, sich mit diesen Themen genauer zu beschäftigen. Die notwendigen Infos solltest Du in der OH, bzw dem PSDK bekommen.
Noch ein Hinweis: Der C Datentyp Bool sollte nach LongBool "übersetzt" werden und die Aufrufkonvention von EnumWindowsProc ist stdcall, so dass die Deklaration der CallBack-Funktion in etwas so aussehen könnte
function MyEnumWindowsProc(AHandle: HWND; APRocessID: Cardinal): LongBool; stdcall;
gruß, choose
  Mit Zitat antworten Zitat