Sendmessage Caly tekst

0

wie ktos moze jak zrobic aby ten kod:

 var
  HC, Y : HWND;
begin
  HC := FindWindow('GRA, nil);
  Y := FindWindowEx(HC, 0, 'GRA', nil);
  SendMessage(Y, WM_KEYDOWN, VK_LEFT, 0);

wysłał caly tekst a nie pojedyncze literki Bo jesli wpisze tam np: KON
To nie skomplikuje, komplikuje tylko pojedyncze litery da się aby on wysyłał caly tekst ?

0

Wiem, nie powinienem odpowiadać po paru piwach, ale czy nie wystarczy pętla z kolejnymi znakami. Może napisz co chcesz osiągnąć.

0

mam ten kodzik

  var
  HC, Y : HWND;
begin
  HC := FindWindow('GRA, nil);
  Y := FindWindowEx(HC, 0, 'GRA', nil);
  SendMessage(Y, WM_KEYDOWN, VK_LEFT, 0);

i tu gdzie VK_LEFT wstawiam czasem jedną literke
i normalnie program wysyła tą literke do gry ale jak chce aby wysyłał 2 literki albo wiecej to juz program szaleje ;/ Nie wiem co w tym kodzie zmienic aby caly tekst wyslac a nie jedną literke

0

po WM_KEYDOWN należy wysyłać WM_KEYUP. w tej chwili program wariuje, bo wciskasz jeden klawisz, i bez puszczania wciskasz drugi (którego też nigdy nie puszczasz).

0

ale mi chodzi o to patrz:

 var
  HC, Y : HWND;
begin
  HC := FindWindow('GRA', nil);
  Y := FindWindowEx(HC, 0, 'GRA', nil);
  SendMessage(Y, WM_CHAR, Ord('B'), 0);
end;

i ten kod wysyła literke B do gry a ja chce aby np wysłał cały tekst i nie wiem jak to zrobic...

0

Odswierzam ! i prosze o pomoc.

0

no to walnij pętlę

var
i: Integer;
tekst: String;

begin
tekst:= 'naucze sie uzywania petli :)';

for i:= 1 to Length(tekst) do
begin
Edit1.Text:= Edit1.Text + tekst[i];
end;

zamiast Edit1.Text .... wrzuć tam SendMessage
i to Length(zmienna) zwraca ci ile znaków ma np. ten twój wpisany tekst do tej zmiennej (czyli w pętla wykona się np. 15 razy, jeśli tekst ma 15 znaków)
a to tekst[i] to dana literka z tej zmiennej np. pierwsza, druga, trzecia i tak po kolei (to "i" w pętli rośnie o 1 i dojdzie przykładowo do 15, czyli do piętnastego znaku)

1 użytkowników online, w tym zalogowanych: 0, gości: 1