Procedura do poprawy – często nie działa

0

Witam. Mam problem z procedurą. Proszę o pomoc.
Wygląda ona tak:

var
  KeybState: array [0..1] of TKeyboardState;
  Key1, Key2: Word;
  lParam: Longint;
  FAppThreadID : Cardinal;
  Value : DWORD;
begin
hook;

  FAppThreadID := GetWindowThreadProcessId(H, nil);
  AttachThreadInput(GetCurrentThreadId, FAppThreadID, True);

  FillChar(KeybState[0], SizeOf(TKeyboardState), 0); //wyzerowac pamiec
  GetKeyboardState(KeybState[1]); //zapamietac stary stan klawiatury
  KeybState[0][VK_CONTROL]:= $80; // CTRL


  begin
  Key1:= VK_DOWN;
  Key2:= VK_UP;

  SetKeyboardState(KeybState[0]); //wcisniety CTRL

  lParam:= MakeLong(500, MapVirtualKey(Key1, 500));


  SendMessage(H, WM_KEYDOWN, Key1, lParam);  //wyslanie klawisza
  SendMessage(H, WM_KEYUP, Key1, lParam);
  sleep(100);
  SendMessage(H, WM_KEYDOWN, Key2, lParam);  //wyslanie klawisza
  SendMessage(H, WM_KEYUP, Key2, lParam);


  sleep(200);
  Application.ProcessMessages; //WAŻNE program musi przetworzyc kolejkę a jak do innej apki to można dac  troche czasu (np Sleep(200));
  SetKeyboardState(KeybState[1]); //przywrócenie starego stanu klawiatury
  end

Chodzi o to, że bardzo często po prostu ona nie działa. Idzie ją jakoś poprawić by działała jak należy? Dzięki.

1

co znaczy nie działa ? przecież nikt nie będzie zgadywał co procedura ma robić, a czego jak rozumiem nie robi
ponadto wklej cały kod

0

Jest to timer, który ma co jakiś czas w danym oknie kliknąć "control+strzałkę w górę i control + strzałkę w dół". Widzę że wygląda to tak, iż jak coś robię na komputerze to jest mniejsza szansa na to że procedura zadziała.

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