Skocz do zawartości

Tworze program i mam problem :/


Pieter

Rekomendowane odpowiedzi

Właśnie tworze program na delphi do gry Star Wars Jedi Knight III: jedi Academy i mam taki problem z tą funkcją:

function sendmessagebystring(handle: hWnd;uMsg: Cardinal; WPARAM: wParam; text: string):integer;

stdcall;external 'user32.dll' name 'SendMessageA';

W ten sposób działa poprawnie (ustawia tekst w oknie tekstowym innej aplikacji):

sendmessagebystring(edit1.Handle,WM_SETTEXT,0,'testowy text');

A jak chce pobrać tekst:

sendmessagebystring(edit1.Handle,WM_GETTEXT,0,edit2.text);

EDIT2 to pole tekstowe w którym ma się znajdować tekst z EDIT1 przesyłany ta funkcją ale się tak nie dzieje :( Co zrobić by dało się odbierać tekst z pola?

 

PROSZE POMÓŻCIE MI!

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Winapi reference:

An application sends a WM_GETTEXT message to copy the text that corresponds to a window into a buffer provided by the caller.

 

WM_GETTEXT 

wParam = (WPARAM) cchTextMax; // number of characters to copy

lParam = (LPARAM) lpszText;  // address of buffer for text

 

 

Parameters

 

cchTextMax

 

Value of wParam. Specifies the maximum number of characters to be copied, including the terminating null character.

 

lpszText

 

Value of lParam. Points to the buffer that is to receive the text.

 

 

 

Return Values

 

The return value is the number of characters copied.

W sendmessagebystring trzecim argumentem jest liczba znakow do skopiowania, a ty chcesz skopiowac az 0. :)

Zeby wiedziec jaka dlugosc ma tekst, skorzystaj wczesniej z WM_GETTEXTLENGTH

Odnośnik do komentarza
Udostępnij na innych stronach

  • 4 tygodnie później...

Co W tym kodzie jest zle?

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls, ComCtrls;

 

type

  TForm1 = class(TForm)

    Button1: TButton;

    RichEdit1: TRichEdit;

    Button2: TButton;

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

function sendmessagebystring(handle: hWnd;uMsg: Cardinal; WPARAM: wParam; lParam: string):integer;

stdcall;external 'user32.dll' name 'SendMessageA';

implementation

 

{$R *.dfm}

 

procedure TForm1.Button1Click(Sender: TObject);

var

aaa: integer;

TheText: String;

jkmpwinconsole:HWND;

editx:HWND;

begin

jkmpwinconsole := FindWindow('jk2mp winconsole', nil);

editx := FindWindowEx(jkmpwinconsole, 0, 'edit', nil);

editx := FindWindowEx(jkmpwinconsole, editx, 'edit', nil);

TheText := ' ';

aaa := sendmessage(editx,WM_GETTEXTLENGTH ,0,0);

sendmessagebystring(editx,WM_GETTEXT,aaa+1,TheText);

RichEdit1.Lines.Text:=TheText;

end;

 

procedure TForm1.Button2Click(Sender: TObject);

begin

application.Terminate;

end;

 

end.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 miesiąc temu...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...