Skocz do zawartości

[DELPHI] SendMessage


Nike125

Rekomendowane odpowiedzi

Nie mam zielonego pojęcia jak wstawić do ShowMessage jakiś tekst

Mam coś takiego :

SendMessage(Foreground,WM_CLOSE, 0, 0);

Gdzie :

Foreground - uchwyt okna do którego wysyłam komunikat

 

Moje pytanie brzmi . jak wysłać tekst w wyznaczone miejsce ( np. w miejsce gdzie wpisuje się wiadomości do chatu ) W jaki sposób to zrobić ????

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki , ze w końcu ktoś się odezwał w moim temacie i próbuje mi pomóc ;)

 

 

ale mam następujący problem :

 

Uruchamiam swój program .

 

łapię handle okna używając :

procedure TForm1.WMHOTKEY(var Msg: TMessage);
var
  MousePos : TPoint;
  Buffer : array[0..255] of char;
begin
{
   procedura ta wykonywana jest w momencie, gdy uzytkownik wcisnie kombinacje
   klawiszy Ctrl+Enter. Wtedy pobierana jest pozycja ekranu, a do zmiennej przypisuje
   sie uchwyt aktywnego okna
}
  if Msg.WParam = $0001 then
  begin
    GetCursorPos(MousePos);  // pobierz pozycje kursora
    xe.Text := IntToStr(MousePos.X); // przypisz do kontrolek
    ye.Text := IntToStr(MousePos.Y);
    Foreground := GetForegroundwindow;  // pobierz uchwyt okna

    // pobierz tytul aktywnego okna
    GetWindowText(Foreground, Buffer, SizeOf(Buffer));

    Label42.Caption := Buffer;
  end;
end;

2. włączam stronkę do której chcę wysłać tekst i używająć wcześniejszej metody(Enter + Ctrl) pobieram handle okna . w label42 wyświetla mi się nazwa okna . A edity xe i ye uzupełniają się pozycją myszki ..

Następnie używając kodu podanego przez kolegę Pieter podstawionego do buttona :

procedure TForm1.Button102Click(Sender: TObject);
begin
SendMessageBystring(Foreground, WM_SETTEXT, 0, 'Witajcie');
end;

wysyłam tekst do okna i ...2.gif

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

A to musi być w takim razie program do testów automatycznych. Jeżeli pole należy do struktury DOM, to będzie to Watir / Firewatir . Jeżeli flash - no to musisz znaleźć coś do testów automatycznych do flasha i zrobić bota :)

Odnośnik do komentarza
Udostępnij na innych stronach

znalazłem :

function FindWindowEx(hwndParent: HWND; hwndChildAfter: HWND; lpszClass:PChar; lpszWindow:PChar): HWND; stdcall;

 

ale nie znam ani klasy , ani nazwy tego komponentu . jest jakiś sposób na pobranie nazwy tej kontrolki tak , jak przy użyciu GetWindowText

Odnośnik do komentarza
Udostępnij na innych stronach

ale Hook przechwytuje komunikaty , np można zablokować jakiś przycisk (klawisz ) czy chodzi Ci może o EventMsg bo w jego strukturze jest :

TEventMsg = packed record
    message: UINT;
    paramL: UINT;
    paramH: UINT;
    time: DWORD;
    hwnd: HWND;
  end;

 

i jak pobrać te informacje z np.funkcji w moim 2 poście ????

 

A wiesz moze jak to ptrzerobić ???

procedure pisznaczat(tekst:string);
var
i: integer;
znak: char;
begin
// text:='.'+text;
{ Clipboard.Clear;
  Clipboard.SetTextBuf(PAnsiChar(tekst)); }
  sendmessage(hwnd,WM_SETFOCUS,0,0);
  sendmessage(hwnd,WM_KEYDOWN,vk_return,0);
  sendmessage(hwnd,WM_KEYUP,vk_return,0);
  sleep(20);

  for i:=0 to length(tekst) do
   begin
   znak:=tekst[i];
   sendmessage(hwnd,WM_KEYDOWN,vkkeyscan(znak),0);
   sendmessage(hwnd,WM_CHAR,ord(znak),0);
   sendmessage(hwnd,WM_KEYUP,vkkeyscan(znak),0);
   end;
  sendmessage(hwnd,WM_KEYDOWN,vk_return,0);
  sendmessage(hwnd,WM_KEYUP,vk_return,0);            
end;

Odnośnik do komentarza
Udostępnij na innych stronach

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