[delphi]Problem z symulacja naciśnięcia klawisza TAB w FF

0

Witam wszystkich.
Piszę mały programik, który będzie automatycznie wpisywał konkretne dane do okna logowania w Firefoksie. Generalnie wszystko jest dobrze, poza jednym mankamentem. Ale może najpierw krótki kod:

procedure TForm1.FormActivate(Sender: TObject);
var
 hOkno, hLogin : THandle;
 i,j: Integer;
 user,pass: string;
begin
hOkno := FindWindow(nil, PChar('Podaj hasło i nazwę użytkownika')) ;
if(hOkno<>0) then
 begin
  hLogin := FindWindowEx(hOkno, 0, 'MozillaWindowClass', nil) ;
  if(hLogin<>0) then
   begin
    user := 'user';
    for i := 1 to Length(user) do
    SendMessage(hLogin, WM_CHAR, Word(user[i]), 0);

 // problem jest w tym miejscu

    pass := 'password';
    for j := 1 to Length(pass) do
    SendMessage(hLogin, WM_CHAR, Word(pass[j]), 0);
   end;
 end;
end;

Problem polega na tym, że wyczerpały mi się pomysły na symulację naciśnięcia klawisza tab we wskazanym miejscu.

postMessage(hEdit, WM_KEYDOWN, VK_TAB, 0);

nie działa, próbowałem z SendInput(), ale też bez skutku. Mam wrażenie, że wszystko co zawiera VK_TAB próbuje wcisnąć w pierwsze pole tekstowe znak tabulacji, a nie symuluje naciśnięcia klawisza TAB.
Jeśli ktoś chce pytać po co mi ten TAB to od razu mówię, że nie potrafię się dobrać do editów okna logowania. Jeden fajny programik pokazywał mi niezmiennie, że całe okno to klasa MozillaWindowClass i było mu bez różnicy czy wskazuję edity czy buttony. W związku z tym chyba jedyną metodą na przejście z pola usera do pola hasła jest wciśnięcie taba. I tego już nie wiem jak zrobić. Jeśli ktokolwiek by wiedział, albo miał pomysły bądź wskazówki to będę bardzo wdzięczny.
Tak w ogóle to w akcie desperacji starałem się zasymulować kliknięcie myszy w polu hasła, ale to też mi nie wyszło (z tym, że tutaj jest duża szansa, że coś robiłem źle) [glowa]

0

Spróbuj takiej kombinacji:

PostMessage(Uchwyt_do_Okna,WM_NextDlgCtl,0,0);

Przesuwa miejsce ustawienia fokusa klawiatury po wszystkich kontrolkach danego okna po jednym według TabOrder. To powinno zadziałać o ile dobrze zrozumiałem problem.

Wczoraj to dziś tylko że jutro....

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