AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu den Handles

Ein Thema von Zyancali · begonnen am 26. Apr 2005 · letzter Beitrag vom 27. Apr 2005
Antwort Antwort
Zyancali
(Gast)

n/a Beiträge
 
#1

Frage zu den Handles

  Alt 26. Apr 2005, 20:26
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 ?
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 !
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Frage zu den Handles

  Alt 26. Apr 2005, 20:49
wenn du die exakte fenstercaption wüsstest könntest du mit
FindWindow(nil, 'exakte fenstercaption') 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:
Delphi-Quellcode:
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;
beispielaufruf:
Delphi-Quellcode:
var LHandle: Cardinal;
begin
  LHandle := GetHandleByCaption('Mozilla Thunderbird');
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

Re: Frage zu den Handles

  Alt 26. Apr 2005, 20:54
Zum Handle:

Es ist eigentlich nur eine Zahl, die in diesem Kontext eine gewisse Gültigkeit hat. (Ich liebe Allgemeines )

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 ...)
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#4

Re: Frage zu den Handles

  Alt 27. Apr 2005, 13:08
Zitat von jfheins:
Es ist eigentlich nur eine Zahl, die in diesem Kontext eine gewisse Gültigkeit hat. (Ich liebe Allgemeines )

Du sagt Windows sozusagen: "Ich will Fenster Nr. 852355" oder "Beende bitte Prozess Nr. 24579"
Hier hast du also einmal ein Festerhandle und einmal ein Prozesshandle. (Musst du natürlich alles vorher ermitteln ...)
Und jetzt die Preisfrage: jeder Prozess hat eine eindeutige Process ID, die nicht gleich dem Wert eines Handles auf diesen Prozess ist. Warum ist dies so, wenn doch das Handle nur eine Zahl zur Identifikation ist?

Nachtrag: Natürlich darf alternativ auch die Thread-ID oder die File-ID besprochen werden
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Frage zu den Handles

  Alt 27. Apr 2005, 16:08
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
  Mit Zitat antworten Zitat
Mephistopheles
(Gast)

n/a Beiträge
 
#6

Re: Frage zu den Handles

  Alt 27. Apr 2005, 17:58
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.
  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:49 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