Zmiana kodu wysylania hotkeya

0

Witam.

Da radę zmienić ten kod tak, by hotkey był wysyłany do danego okna?

procedure KeyDownUp(KeyToSend : Byte; KeyDown : boolean);
const
  DownUp_Flags_Arr : array[boolean] of DWORD = (0, KEYEVENTF_KEYUP);
  Extended_Flags_Arr : array[boolean] of DWORD = (0, KEYEVENTF_EXTENDEDKEY);
var
  Input : TagINPUT;
  KeyExtended : boolean;
begin
  Input.Itype := INPUT_KEYBOARD;
  Input.ki.wVK := KeyToSend;
  Input.ki.wScan := MapVirtualKey(KeyToSend, 0);
  KeyExtended := KeyToSend in [VK_CONTROL, VK_LCONTROL, VK_RCONTROL,
    VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT, VK_HOME, VK_END, VK_PRIOR,
    VK_NEXT, VK_INSERT, VK_DELETE, VK_MENU];
  Input.ki.dwFlags := DownUp_Flags_Arr[not KeyDown] or Extended_Flags_Arr[KeyExtended];
  Input.ki.time := 0;
  SendInput(1, Input, SizeOf(Input));
end;

Dzięki.

0

Jeśli potrzebujesz wysłać komunikat do konkretnego okna to skorzystaj z SendMessage lub PostMessage. Tutaj masz kilka przykładów - http://stackoverflow.com/questions/18163619/how-to-send-virtual-keys-to-other-application-using-delphi-2010

Z SendInput też mogło by działać (tak sądzę), jednak najpierw trzeba by aktywować to docelowe okno, a dopiero później zasymulować wciskanie klawiszy.

0

Tylko że wtedy nie wyślę dwóch hotkeyów na raz - np. shift+f7.

0

kiedy wtedy? Coś wiesz ale nie do końca czyli guzik wiesz. Przy użyciu SendMessage wyślesz i SHIFT+F7 tylko, że trzeba umieć coś więcej niż kopiować kod z googla - np. umiejętność rozumienia kodu, który się skopiowało, się przydaje

0

Patrzyłem w googlach, wpisywałem wszelkie frazy, które mogłyby mnie naprowadzić na coś typu shift+f7 do danej aplikacji i nic nie znalazłem. Był tylko ten kod i to również z tego forum, jednak on działa ogólnie na całym kompie.

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