Nike125 Opublikowano 11 Czerwca 2008 Udostępnij Opublikowano 11 Czerwca 2008 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 Więcej opcji udostępniania...
Pieter Opublikowano 12 Czerwca 2008 Udostępnij Opublikowano 12 Czerwca 2008 najpierw deklarujesz function SendMessageByString(hwnd:hwnd;msg: cardinal;wParam: integer;lParam: string):integer; stdcall;external 'user32.dll' name 'SendMessageA'; a potem SendMessageBystring(handle, WM_SETTEXT, 0, text); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nike125 Opublikowano 13 Czerwca 2008 Autor Udostępnij Opublikowano 13 Czerwca 2008 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 ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pieter Opublikowano 13 Czerwca 2008 Udostępnij Opublikowano 13 Czerwca 2008 bo to nie ma być handle okna tylko handle kontrolki do której chcesz tekst wpisać... robiąc FindWindowEx... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 13 Czerwca 2008 Administratorzy Udostępnij Opublikowano 13 Czerwca 2008 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 Więcej opcji udostępniania...
Nike125 Opublikowano 13 Czerwca 2008 Autor Udostępnij Opublikowano 13 Czerwca 2008 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 Więcej opcji udostępniania...
Pieter Opublikowano 13 Czerwca 2008 Udostępnij Opublikowano 13 Czerwca 2008 Dopiero teraz zauważyłem, że to firefox... w przeglądarce wątpię żeby Ci się udało... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nike125 Opublikowano 13 Czerwca 2008 Autor Udostępnij Opublikowano 13 Czerwca 2008 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 Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę