Клавиатура
Code: |
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } procedure AppIdle(Sender: TObject; var Done: Boolean); public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AppIdle(Sender: TObject; var Done: Boolean); begin if GetAsyncKeyState(VK_SNAPSHOT) <> 0 then Form1.Caption := 'PrintScreen ia?aoa !'; Done := True; end;
procedure TForm1.FormCreate(Sender: TObject); begin Application.OnIdle := AppIdle; end; end. |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Code: |
// используемые переменные var Dummy: integer = 0; OldKbHook: HHook = 0;
implementation
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; begin if code < 0 then Result := CallNextHookEx(oldKbHook, code, wparam, lparam) else Result := 1; end;
// включение клавы
procedure TForm1.KeyBoardOn(Sender: TObject); begin if OldKbHook <> 0 then begin UnHookWindowshookEx(OldKbHook); OldKbHook := 0; end; SystemParametersInfo(SPI_SETFASTTASKSWITCH, 0, 0, 0); SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0); end;
// выключение клавы
procedure TForm1.KeyBoardOff(Sender: TObject); begin SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy, 0); SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0); OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0); end; |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Code: |
procedure TForm1.Button1Click(Sender: TObject); begin if GetKeyState(VK_SHIFT) < 0 then ShowMessage('Кнопка Shift нажата') else ShowMessage('Обычное нажатие кнопки'); end; |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Как сделать так, чтобы при минимизации приложения в Tray его можно было вызвать определённой комбинацией клавиш, например Alt-Shift-F9 ?
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
В примере для глобального перехвата нажатия клавиши print screen регистрируется горячая клавиша (hot key).
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Я хотел бы обнаружить более 2 клавиш, нажимая в форме. Например, я хотел бы знать, если пользователь нажал время. В onkeydown должны, кажется, только чек на одну или две клавиши максимум, но верном вы можете определить, какие клавиши нажаты.
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Code: |
var i : integer; begin i := 0; {запрещаем Ctrl-Alt-Del} SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @i, 0); end. // необходим unit WinProcs // для Alt-Tab: SPI_SETFASTTASKSWITCH |
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Представьте себе такую ситуацию: глупый пользователь включает тачку, а тут... светомузыка, индикаторы состояния клавиш то включатся, то погаснут... а если ещё каждую секунду проходит 500 тактов!!! Шутка, конечно злостная, но воспроизводится весьма легко.
Всё основывается на следующем коде:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Для этого необходимо написать процедуру-обработчик для Application.OnMessage:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Code: |
SelectNext(screen.ActiveControl, True, True); |
Разместите приведенный код в обработчике одного из собитий. SelectNext - защищенный метод TWinControl со следующим прототипом:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Как-то бухгалтер, который пользовался моей программой, заявил, что ему не удобно перескакивать пустые поля в форме кнопкой Tab, и что намного удобнее это делать обычным Enter-ом. Предлагаю посмотреть, как я решил эту проблемму.
Совместимость: Все версии Delphi. Автор: Khaled Shagrouni
Пример обработчика события:
- Подробности
- Родительская категория: Мышка/клавиатура
- Категория: Клавиатура
Страница 1 из 4