Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Handle aller Controls (https://www.delphipraxis.net/35452-handle-aller-controls.html)

Neutral General 7. Dez 2004 13:48


Handle aller Controls
 
Ich weis das es da schon viele Fragen zu gab aber ich konnte nichts Hilfreiches finden.
Ich will doch nur 1 Handle :pale:
Das von dem Richedit von ICQ wo die gesendeten Nachrichten drinstehn.
Und ich kapier das mit dem Enum-Zeug nicht :wall:
Kann mir jemand helfen ?

perle 7. Dez 2004 14:40

Re: Handle aller Controls
 
ich übernehme keine Garantie aber das Handle dürftest du ungefähr so bekommen

Delphi-Quellcode:
...
var
  icq_hwnd : Cardinal;
...
  icq_hwnd := FindWindowEx(FindWindow(nil, '1111111 - Message Session'), 0, 'RichEdit20A', nil);
...
Die Handles der Richedits der einzelnen Nachrichtenfenster unterscheiden sich natürlich. Ich denke mal du musst einfach nur die 1111111 durch die UIN deines Gesprächspartners austauschen und hast dann das richtige Handle, ansonsten tausche die gesamte Caption des Nachrichtenfensters aus falls sie weiter abweicht.

Neutral General 7. Dez 2004 15:33

Re: Handle aller Controls
 
Das Handle des Fensters hab ich ja. Aber es gibt 2 'RichEdit20A' und man bekommt immer nur das erste ...
Aber ich habe bereits ne Lösung durch einen anderen Beitrag gefunden. :wink:
Danke trotzdem für die Hilfe :dp:

Boombuler 7. Dez 2004 15:44

Re: Handle aller Controls
 
Bin mir nich sicher weil ichs nich getestet hab aber das sollte klappen:


Delphi-Quellcode:
function getRichEditNr(ICQNr, editNr:Integer):cardinal;
var i:integer;
begin
  result := 0;
  dec(editNr);
  for i := 0 to editNr do
  begin
    result := FindWindowEx(FindWindow(nil, PChar(Inttostr(ICQNr)+' - Message Session')), result, 'RichEdit20A', nil);
    if result = 0 then
      Exit;
  end;
end;
Dann solltest du das Handle mit

Delphi-Quellcode:
  ....
Handle := getRichEditNr(11111111, 1); //für das erste Edit
                                      //bzw.
Handle := getRichEditNr(11111111, 2); //für das zweite Edit
  ....
bekommen...

Greetz
Boombuler

Neutral General 7. Dez 2004 15:47

Re: Handle aller Controls
 
Danke, ich werds ausprobieren aber es funktioniert ja schon :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:04 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