AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat?
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat?

Ein Thema von DelphiPeter · begonnen am 5. Sep 2011 · letzter Beitrag vom 6. Sep 2011
Antwort Antwort
DelphiPeter

Registriert seit: 21. Dez 2007
Ort: Iserlohn
198 Beiträge
 
Delphi 2010 Professional
 
#1

Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat?

  Alt 5. Sep 2011, 19:13
Delphi-Version: 2007
Hallo Freunde!

Weiß jemand wie ich den Handle der Anwendung ermitteln kann, die meine Anwendung aufgerufen hat?

Wär super, wenn jemand eine hilfereiche Idee hat!


Peter
Peter Majewski
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Fenster Handle der Anwendung, die meine Anwendung aufgerufen hat?

  Alt 6. Sep 2011, 20:53
Moin Peter,

die Beschreibung ist jetzt nicht eindeutig:
Startest Du ein Programm und Du möchtest damit etwas anfangen, oder willst Du etwas über das Programm wissen, von dem aus Dein Programm gestartet wurde?
Im ersten Fall kannst Du das Programm mit CreateProcess starten und bekommst in der Process-Information ein Handle auf den Prozess und die ProcessID.

Im zweiten Fall kannst Du GetCurrentProcessID die ID Deines eigenen Prozesses ermitteln und mit folgender Funktion (Unit TlHelp32 einbinden)

Delphi-Quellcode:
function csGetParentProcessID(const AdwProcessID : DWORD;var AdwParentProcessID : DWORD) : boolean;

var
  hSnapshot : DWORD;
  pe32 : PROCESSENTRY32;

begin
  Result := false;
  hSnapshot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  try
    FillChar(pe32,SizeOf(pe32),0);
    pe32.dwSize := SizeOf(pe32);
    if not Process32First(hSnapshot,pe32) then exit;
    while (pe32.th32ProcessID <> AdwProcessID) and Process32Next(hSnapshot,pe32) do;
    if pe32.th32ProcessID <> AdwProcessID then exit;
    AdwParentProcessID := pe32.th32ParentProcessID;
    Result := True;
  finally
    CloseHandle(hSnapshot);
  end;
end;
die ID des Programmes ermitteln, aus dem heraus Deines aufgerufen wurde.

Mit MSDN-Library durchsuchenGetTopWindow, MSDN-Library durchsuchenGetNextWindow und MSDN-Library durchsuchenGetWindowThreadProcessId solltest Du dann ein zugehöriges Fensterhandle ermitteln können.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 10:12 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