Code: |
{With SendInput API}
// Example: Send text procedure TForm1.Button1Click(Sender: TObject); const Str: string = 'writing writing writing'; var Inp: TInput; I: Integer; begin Edit1.SetFocus;
for I := 1 to Length(Str) do begin // press Inp.Itype := INPUT_KEYBOARD; Inp.ki.wVk := Ord(UpCase(Str[i])); Inp.ki.dwFlags := 0; SendInput(1, Inp, SizeOf(Inp));
// release Inp.Itype := INPUT_KEYBOARD; Inp.ki.wVk := Ord(UpCase(Str[i])); Inp.ki.dwFlags := KEYEVENTF_KEYUP; SendInput(1, Inp, SizeOf(Inp));
Application.ProcessMessages; Sleep(80); end; end;
// Example: Simulate Alt+Tab procedure SendAltTab; var KeyInputs: array of TInput; KeyInputCount: Integer;
procedure KeybdInput(VKey: Byte; Flags: DWORD); begin Inc(KeyInputCount); SetLength(KeyInputs, KeyInputCount); KeyInputs[KeyInputCount - 1].Itype := INPUT_KEYBOARD; with KeyInputs[KeyInputCount - 1].ki do begin wVk := VKey; wScan := MapVirtualKey(wVk, 0); dwFlags := KEYEVENTF_EXTENDEDKEY; dwFlags := Flags or dwFlags; time := 0; dwExtraInfo := 0; end; end; begin KeybdInput(VK_MENU, 0); // Alt KeybdInput(VK_TAB, 0); // Tab KeybdInput(VK_TAB, KEYEVENTF_KEYUP); // Tab KeybdInput(VK_MENU, KEYEVENTF_KEYUP); // Alt SendInput(KeyInputCount, KeyInputs[0], SizeOf(KeyInputs[0])); end; |
Новые статьи
- Как сделать клавишу-акселератор (keyboard shortcut) компонету, у которого нет заголовка
- Как определить нажаты ли клавиши Shift, Alt или Ctrl
- Как выполнять другую команду по нажатию на кнопку, если зажата клавиша Shift
- Какая клавиша нажата при загрузке приложения
- Работа с цифровой клавиатурой при выключенном NumLock
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!