Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Window Handle (https://www.delphipraxis.net/71908-window-handle.html)

Luckie 23. Jun 2006 13:01

Re: Window Handle
 
Dazu ist doch WM_GETTEXT da.

delphiUser88 23. Jun 2006 13:04

Re: Window Handle
 
Funktioniert nicht er schreibt mir die Bezeichnung des Programmes selber (Caption) ins Memo aber nicht den Inhalt des Chatfensters Ich brauch ja dazu das richtige Handle in dem Falle gewuenschteNr := 3; //Memo (Chattext)

Beim Text senden habe ich es ja ins Handle gewuenschteNr := 5; //Editfeld vom Chatfenster geschrieben mit EnumChildWindows(iWindow, @EnumWindowsProc, LongWord(Edit1));

Jetzt aber muss der Text aus der Funktion GETTXT in dem Handle gewuenschteNr := 3; //Memo (Chattext) empfangen werden und ins Memo1 rein geht das vielleicht in der Variante die du wählst umzusetzen ?

SirThornberry 23. Jun 2006 13:04

Re: Window Handle
 
ok, jetzt beim erneuten Lesen hab ichs begriffen. WM_GETTEXT liefert immer den Text. GetWindowText liefert nur den Text wenn es im eigenen Prozess ist das Handle, ansonsten wird die Caption zurück geliefert.

delphiUser88 23. Jun 2006 13:10

Re: Window Handle
 
vielleicht wäre ja in dem entsprechenden Fenster (gewuenschteNr := 3) alles markieren und kopieren eine Lösung zumindest wäre der Text dann ersteinmal im Zwischenspeicher würde das gehen ? ich weis ist keine saubere Lösung

delphiUser88 23. Jun 2006 13:40

Re: Window Handle
 
Wenn euch noch interessieren sollte wie ich das entsprechne handle rausbekomme dann schaut euch diese Funktion an

Delphi-Quellcode:

function HandlePrint(Handle: THandle; dat: LongWord): Boolean;
stdcall;
begin

  // zeigt die Handles direkt im Chatfensters an
  SendMessage(Handle, WM_SETTEXT, 0, Integer(PChar('Gewuenschte Handle ist: ' + IntToStr(searchNr))));

  Inc(searchNr);

  // weiter um alles Handles rauszufinden
  Result := true;
end;

//----------------------------------

procedure TForm1.ButtonClick(Sender: TObject);
begin

  iWindow := FindWindow(nil, PChar('Raum plauderecke')); //Name des Chatfensters
  searchNr := 0;

  // zeigt die handles des Chatfensters an
  if iWindow <> 0 then EnumChildWindows(iWindow, @HandlePrint, 0);


end;
testen könnt ihr das auf www.spinchat.de im Raum plauderecke ihr könnt aber auch ein andren javachat dazu benutzen muss dann nur diese zeile iWindow := FindWindow(nil, PChar('Raum plauderecke')); angepasst werden

toms 23. Jun 2006 14:53

Re: Window Handle
 
WM_GETTEXT wird von dem Chat-Memo Fenster (SunAwtCanvas Klasse) nicht unterstuetzt.

delphiUser88 23. Jun 2006 15:48

Re: Window Handle
 
Also ich habe jetzt das entsprechende Chatfenster (Nicht spinchat) mit WinSpy analysiert folgende Fenster gibt es


Klasse: RichEdit20W
Klasse: Edit
Klasse: ListBox

das RichEdit denk ich wird wohl das Chatfenster sein Edit das Eingabefeld und ListBox die Userliste also muss ich mit WM_GETTEXT
über meine Funktion GETTXT wohl das Richedit auslesen vielleicht könnt ihr damit was anfangen und mir doch noch helfen :-D

delphiUser88 24. Jun 2006 10:43

Re: Window Handle
 
Hat denn keiner weitere Lösungsvorsachläge ?

Christian Seehase 24. Jun 2006 12:16

Re: Window Handle
 
Moin Delphiuser,

Du könntest das so machen:
In der EnumChildWindows-Routine prüfst Du zu jedem Handle mit MSDN-Library durchsuchenGetClassName/Hier im Forum suchenGetClassName welche Klasse es hat. Handelt es sich um RichEdit20W, dann liest Du es mit WM_GETTEXT aus.

delphiUser88 24. Jun 2006 23:46

Re: Window Handle
 
Hallo Christian danke für die schnelle Hilfe. Leider weis ich nicht genau wie ich das mit GetClassName umsetzen soll. Eigentlich befinde ich mich ja in der Funktion GETTXT schon im richtigen Fenster

Delphi-Quellcode:
// globale Variablen
searchNr              : Integer;
gewuenschteNr         : Integer;
iWindow               : THandle;

function GETTXT(Handle: THandle; RichEdit: TRichEdit): Boolean; stdcall;
begin

  if Assigned(RichEdit) and (searchNr = gewuenschteNr) then
  begin
    SendMessage(Handle, WM_GETTEXT, 0, integer(PChar(RichEdit.Text)));
    Result := false;
  end
  else
  begin

    Result := true;
    Inc(searchNr);
  end;
end;

ich muss denk ich mal nur mit

Delphi-Quellcode:
EnumChildWindows(iWindow, @GETTXT,//hier weis ich nicht weiter den Inhalt in ein Memo oder Richedit schreiben
MFG: DelphiUser


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 Uhr.
Seite 3 von 5     123 45      

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