AGB  ·  Datenschutz  ·  Impressum  







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

Window Handle

Ein Thema von delphiUser88 · begonnen am 22. Jun 2006 · letzter Beitrag vom 26. Jun 2006
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Window Handle

  Alt 23. Jun 2006, 10:37
Du hast es doch schon da steheN.
Delphi-Quellcode:
if Assigned(Memo) and (searchNr = gewuenschteNr) then
  begin
    SendMessage(Handle, WM_GETTEXT, 0, Integer(PChar(Memo.Text)));
    Result := false;
  end
Was willst du denn noch?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
delphiUser88

Registriert seit: 22. Jun 2006
29 Beiträge
 
Delphi 5 Standard
 
#12

Re: Window Handle

  Alt 23. Jun 2006, 10:43
Delphi-Quellcode:

procedure TForm1.GetTextBtnClick(Sender: TObject);
begin


  // Fenster suchen.
  iWindow := FindWindow(nil, PChar('entsprechende Fensterbezeichnung');

  searchNr := 0;
  gewuenschteNr := 5;


// ab hier möchte ich den Inhalt des Javafensters in ein Memo auf der Form schreiben also Memo.Lines.add wie setz ich das jetzt um ?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Window Handle

  Alt 23. Jun 2006, 11:10
Ja, was meinst du, was der Quellcode macht?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
delphiUser88

Registriert seit: 22. Jun 2006
29 Beiträge
 
Delphi 5 Standard
 
#14

Re: Window Handle

  Alt 23. Jun 2006, 11:32
eben nicht ins memo schreiben warum auch immer

Delphi-Quellcode:

// globale Variablen
searchNr : Integer;
gewuenschteNr : Integer;
iWindow : THandle;

function EnumWindowsProc(Handle: THandle; Edit: TEdit): Boolean; stdcall;
begin

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

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

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

procedure TForm1.SendBtnClick(Sender: TObject);
begin


  // Fenster suchen.
  iWindow := FindWindow(nil, PChar('entsprechende Fensterbezeichnung');

  searchNr := 0;
  gewuenschteNr := 5; //Editfeld vom Chatfenster (Handle)


// damit sende ich den Text der bei mir im Edit1 steht an das Editfeld des Chatfensters und betätige dann die Entertaste
// das funktioniert ja auch und der text wird gesendet

EnumChildWindows(iWindow, @EnumWindowsProc, LongWord(Edit1));
SendMessage(iWindow,WM_KEYDOWN,VK_RETURN, 0);
SendMessage(iWindow,WM_KEYUP,VK_RETURN, 0);


end;
jetzt möchte ich aber das der Chatfensterinhalt (Text) diesmal (gewuenschteNr := 3) mit der Funktion GETTXT ausgelesen wird und in mein Memo1 auf meiner Form übergeben wird und das versuche ich die ganze zeit so

Delphi-Quellcode:


function GETTXT(Handle: THandle; Memo: TMemo): Boolean; stdcall;
begin

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

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

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

procedure TForm1.GetTXTBtnClick(Sender: TObject);
begin


  // Fenster suchen.
  iWindow := FindWindow(nil, PChar('entsprechende Fensterbezeichnung');

  searchNr := 0;
  gewuenschteNr := 3; //Memo (Chattext) vom Chatfenster (Handle)


//so und ab hier gibt es Probleme ich weiß nicht genau wie ich die Funktion GETTXT aufrufen muss damit der Chatinhalt in mein Memo
//geschrieben wird

end;
  Mit Zitat antworten Zitat
23. Jun 2006, 12:08
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "Windows API / MS.NET Framework API" verschoben.
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Window Handle

  Alt 23. Jun 2006, 12:14
Es gruselt mich. Habt ihr mal im MSDN geschaut wie die Parameter für wm_gettext lauten? Anstelle des Pointers auf den Buffer übergebt Ihr 0, und anstelle der maximal möglichen Länge des Buffers übergebt ihr die Adresse von Memo1.text.
Da "Text" ein Property ist geht derdirekte zugriff gar nicht sondern es muss auf eine zwischenvariable
MSDN-Library durchsuchenwm_gettext
Ihr könnt aber auch gleich die Funktion GetWindowText nehmen, da haben die Parameter schon die richtigen Namen so das es dort einleuchtender sein sollte was ihr bisher falsch gemacht habt.

[Edit]
Delphi-Quellcode:
var lBuffer: String;
    lSize : Integer;
begin
  SetLength(lBuffer, 255);
  lSize := GetWindowText(Handle, @lBuffer[1], Length(lBuffer));
  Memo1.Text := copy(lBuffer, 1, lSize);
wenn du unbedingt SendMessage verwenden willst dann so:
Delphi-Quellcode:
var lBuffer: String;
    lSize : Integer;
begin
  SetLength(lBuffer, 255);
  lSize := SendMessage(Handle, WM_GETTEXT, Length(lBuffer), Integer(@lBuffer[1]));
  Memo1.Text := copy(lBuffer, 1, lSize);
[/Edit]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#17

Re: Window Handle

  Alt 23. Jun 2006, 12:29
GetWindowText geht aber nur im eigenen Prozess:
Zitat:
GetWindowText cannot retrieve the text of a control in another application.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Window Handle

  Alt 23. Jun 2006, 12:32
Ich hab die Erfahrung gemacht das GetWindowText auch für andere Prozesse funktioniert. War aber vermutlich früher mal anders und daher dieser Hinweis. Ansonsten hab ichs grad nochmal mit SendMessage ergänzt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Window Handle

  Alt 23. Jun 2006, 12:48
Dazu noch in der Remarkssection:
Zitat:
If the target window is owned by the current process, GetWindowText causes a WM_GETTEXT message to be sent to the specified window or control. If the target window is owned by another process and has a caption, GetWindowText retrieves the window caption text. If the window does not have a caption, the return value is a null string. This behavior is by design.
Es mag sein, dass es funktioniert, aber man sollte sich nicht darauf verlassen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Window Handle

  Alt 23. Jun 2006, 12:57
ok, dann würde man aber gar nicht ran kommen, auch nicht mit SendMessage außer man pflanzt sich in den anderen Prozess ein.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 19:03 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