AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Externes von mir gestartes Programm beenden? Hilfe!
Thema durchsuchen
Ansicht
Themen-Optionen

Externes von mir gestartes Programm beenden? Hilfe!

Offene Frage von "firefighter"
Ein Thema von firefighter · begonnen am 8. Jan 2004 · letzter Beitrag vom 9. Jan 2004
Antwort Antwort
firefighter

Registriert seit: 8. Jan 2004
10 Beiträge
 
#1

Re: Externes von mir gestartes Programm beenden? Hilfe!

  Alt 8. Jan 2004, 11:46
Zitat von choose:
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;
Danke für herzlichen Begrüssungstext
Irgendwie muss ich über die pid einen handle auf das fenster z.b. vom IE bekommen. Du schreibst, dass Dir keine direkte API-Funktion dazu bekannt ist, aber über Umwege dennoch das Ziel erreicht werden kann. Was Du im Anschluss geschrieben hast verwirrte mich leider nur zum grössten Teil.

Meist du man schreibt eine Schleife die alle handels durchgeht und davon die pid ausgibt, welche mit meiner vorhanden pid verglichen wird? Falls ja, habe ich den Inhalt verstanden, stehe aber dank meines Anfängerwissens vor einem grossen Problem - der Umsetzung.

Wie schwer wäre eine function, welche als Paramter die PID und als Rückgabewert den handle beinhaltet? Falls dies nicht sonderlich schwer wäre, würde ich mich riesig freue diese zu bekommen.

firefighter

PS: Danke schonmal für die Antwort
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz