Sendmessage Caly tekst

Sendmessage Caly tekst
0

wie ktos moze jak zrobic aby ten kod:

Kopiuj
 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 ?

edytowany 1x, ostatnio: madmike
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
0

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


Pozdrawiam.
0

mam ten kodzik

Kopiuj
  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

Azarien
  • Rejestracja:ponad 21 lat
  • Ostatnio:około godziny
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:

Kopiuj
 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...

KA
Takie rzeczy to tylko w erze żadnym komunikatem nie wyślesz tekstu trzeba po 1 znaku, można zmienić tekst okna (albo np. kontrolki EDIT) za pomocą funkcji SetWindowText ale w grze to chyba nie o to Ci chodzi.
0

Odswierzam ! i prosze o pomoc.

PS
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 14 lat
0

no to walnij pętlę

Kopiuj
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)

edytowany 4x, ostatnio: pan_smierci

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.