Для начала маленький код для определения нажатия клавиши Print Screen:
private
procedure AppIdle(Sender: TObject; var
Done: Boolean);
//…
procedure TForm1.AppIdle(Sender: TObject; var Done:
Boolean);
begin
if GetAsyncKeyState(VK_SNAPSHOT) <> 0
then
Form1.Caption := 'PrintScreen!';
Done :=
True;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnIdle
:= AppIdle;
end;
А теперь программный аналог Print Screen’а:
procedure TForm1.Button1Click(Sender: TObject);
var
bmp:
TBitmap;
begin
bmp := TBitmap.Create;
try
bmp.Width := Screen.Width;
bmp.Height := Screen.Height;
BitBlt(bmp.Canvas.Handle, 0,
0, Screen.Width, Screen.Height,
GetDC(GetDesktopWindow),
0, 0, SRCCopy);
Image1.Picture.Bitmap:=bmp;
finally
bmp.Free;
end;
end;
Проверка свечения диодов на клавиатуре:
procedure TForm1.Button1Click(Sender: TObject);
begin
// x – integer. X
= 145 = Scroll Lock; X = 144 = Num Lock; X = 20 = Caps Lock
if
GetKeyState(X) and 1 = 0 then
Form1.Caption := 'Не
горит'
else
Form1.Caption :=
'Горит';
end;
Эмуляция нажатия клавиш например для Memo1:
SendMessage(Memo1.Handle, WM_CHAR, Ord('A'), 0);
И на последок коды виртуальных клавиш:
vk_LButton = $01;
vk_RButton =
$02;
vk_Cancel = $03;
vk_MButton =
$04; { генерятся только системой вместе с L & RBUTTON
}
vk_Back =
$08;
vk_Tab =
$09;
vk_Clear = $0C;
vk_Return =
$0D;
vk_Shift = $10;
vk_Control =
$11;
vk_Menu =
$12;
vk_Pause = $13;
vk_Capital =
$14;
vk_Escape = $1B;
vk_Space =
$20;
vk_Prior =
$21;
vk_Next = $22;
vk_End =
$23;
vk_Home = $24;
vk_Left
=
$25;
vk_Up =
$26;
vk_Right =
$27;
vk_Down =
$28;
vk_Select = $29;
vk_Print =
$2A;
vk_Execute = $2B;
vk_SnapShot = $2C;
{
vk_Copy = $2C не используется клавиатурой }
vk_Insert = $2D;
vk_Delete =
$2E;
vk_Help = $2F;
{ vk_A - vk_Z такие же,
как и их ASCII-эквиваленты: 'A' - 'Z' }
{ vk_0 - vk_9 такие же, как и их
ASCII-эквиваленты: '0' - '9' }
vk_NumPad0 = $60;
vk_NumPad1 =
$61;
vk_NumPad2 = $62;
vk_NumPad3 =
$63;
vk_NumPad4 = $64;
vk_NumPad5 =
$65;
vk_NumPad6 = $66;
vk_NumPad7 =
$67;
vk_NumPad8 = $68;
vk_NumPad9 =
$69;
vk_Multiply = $6A;
vk_Add =
$6B;
vk_Separator = $6C;
vk_Subtract =
$6D;
vk_Decimal = $6E;
vk_Divide =
$6F;
vk_F1 =
$70;
vk_F2 =
$71;
vk_F3 =
$72;
vk_F4 =
$73;
vk_F5 = $74;
vk_F6 =
$75;
vk_F7 =
$76;
vk_F8 =
$77;
vk_F9 =
$78;
vk_F10 =
$79;
vk_F11 =
$7A;
vk_F12 =
$7B;
vk_F13 =
$7C;
vk_F14 =
$7D;
vk_F15 =
$7E;
vk_F16 =
$7F;
vk_F17 =
$80;
vk_F18 =
$81;
vk_F19 =
$82;
vk_F20 =
$83;
vk_F21 =
$84;
vk_F22 =
$85;
vk_F23 =
$86;
vk_F24 =
$87;
vk_NumLock = $90;
vk_Scroll =
$91;