![]() |
Frage zu den Handles
Hi @all!
Ich habe noch nie mit handles gearbeitet, deswegen brauche mal dringend eure hilfe: und zwar: ich habe eine Anwendung dessen Windowcaption mit Mozilla Thunderbird endet. Wie kann ich nun per caption abfragen, ob diese Anwendung läuft ? :gruebel: und gegebenenfalls (auch wenn ich von handles NOCH null ahnung habe) ein handle zurückkriegen ? Was kann man mit Handles eigentlich alles anstellen ? Kennt jemand einen link zu einem deutschen tutorial vom handles unter delphi 6 pro ? [offtopic=Bite nicht steinigen] Weiss jemand wo man die Source Thunderbird bekommt ? Auf der Thunderbird site gibts nichts. [/offtopic] PS: Danke im Voraus PPS: Bitte wegen mehreren Fragen nicht schließen ! :| |
Re: Frage zu den Handles
wenn du die exakte fenstercaption wüsstest könntest du mit
Delphi-Quellcode:
arbeiten was dir dann das handle zurück geben würde. so musst du die caption selbst prüfen und alle fenster durchgehen. Entweder mit EnumWindows oder mit FindWindow und "GW_HWNDNEXT". Hier eine Procedure die das macht was du willst:
FindWindow(nil, 'exakte fenstercaption')
Delphi-Quellcode:
beispielaufruf:
function GetHandleByCaption(ACaption: String): Cardinal;
var LHandle, LGiveback: Cardinal; LPChar: PChar; begin LPChar := StrAlloc(256); LGiveback := 0; LHandle := FindWindow(nil, nil); while (LHandle <> 0) and (LGiveback = 0) do begin GetWindowText(LHandle, LPChar, 255); if RightStr(string(LPChar), length(ACaption)) = ACaption then LGiveback := LHandle; LHandle := GetWindow(LHandle, GW_HWNDNEXT); end; StrDispose(LPChar); result := LGiveback; end;
Delphi-Quellcode:
var LHandle: Cardinal;
begin LHandle := GetHandleByCaption('Mozilla Thunderbird'); |
Re: Frage zu den Handles
Zum Handle:
Es ist eigentlich nur eine Zahl, die in diesem Kontext eine gewisse Gültigkeit hat. (Ich liebe Allgemeines :mrgreen: ) Du sagt Windows sozusagen: "Ich will Fenster Nr. 852355" oder "Beende bitte Prozess Nr. 24579" Hier hast du also einmal ein Fensterhandle und einmal ein Prozesshandle. (Musst du natürlich alles vorher ermitteln ...) |
Re: Frage zu den Handles
Zitat:
Nachtrag: Natürlich darf alternativ auch die Thread-ID oder die File-ID besprochen werden ;) |
Re: Frage zu den Handles
Ich würde jetzt tippen, mit einem Handle sind Rechte verbunden, und mit einer ProcessID kann man den Prozess nur identifizieren.
Aber ich habe dich Befürchtung, du weißt es, und ich liege vollkommen falsch :mrgreen: |
Re: Frage zu den Handles
Warum? So falsch ist das nicht ;)
Das Handle gehört einem Prozess oder dem System (Kernel) - also sind damit Rechte verbunden (wie du schon sagtest). Wichtiger ist aber, daß direkt mit dem Handle ein Objekt verbunden ist. Der Objektmanager von Windows ist in der Lage Handle und Objektreferenzen (Pointer auf interne Strukturen) ineinander zu überführen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 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