Code:

procedure TForm1.Button1Click(Sender: TObject);//На русский

var

Layout: array[0.. KL_NAMELENGTH] of char;

begin

LoadKeyboardLayout( StrCopy(Layout,'00000419'),KLF_ACTIVATE);

end;

 

procedure TForm1.Button2Click(Sender: TObject);//На английский

var

Layout: array[0.. KL_NAMELENGTH] of char;

begin

LoadKeyboardLayout(StrCopy(Layout,'00000409'),KLF_ACTIVATE);

end;

 

 

Code:

VAR

KS: TKeyboardState;

begin

GetKeyboardState(KS);

KS[020] := KS[020] XOR 1; //Caps Lock

KS[144] := KS[144] XOR 1; //Num Lock

KS[145] := KS[145] XOR 1; //Scroll Lock

SetKeyboardState(KS);

end;

 

 

Code:

program Project1;

 

uses

Windows,

Forms,

Unit1 in 'Unit1.pas' {Form1};

 

{$R *.RES}

 

begin

if GetKeyState(vk_F8) < 1 then

   MessageBox(0, 'F8 was pressed during startup', 'MyApp', mb_ok);

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

 

 

Возможный вариант - присвоить ссылку на этот компонент свойству FocusControl TLabel'а. В примере используется невидимый Label для создания "быстрой" клавиши (Alt+M) компонента Memo. Чтобы использовать пример, разместите на форме компонент TMemo, Label и несколько других компонентов, которые могут принимать фокус ввода. Запустите программу, переведите фокус ввода куда-нибудь вне Memo и нажмите Alt+M - фокус ввода вернется в Memo.

 

Code:

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;

 

 

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

begin

ShowWindow(Handle, SW_HIDE);

ShowWindow(Application.Handle, SW_HIDE);

end;

 

Используйту WinAPI функцию GetKeyState() для определения нажатия клавиши в тексте проекта. Для того чтобы увидеть текст файла проекта в главном меню Delphi 3 выберите "View">>"ProjectSource" в Delphi 4 "Project">>"View Source".

Пример использования:

Code:

ChangeLayout(LANG_RUSSIAN);

ChangeLayout(LANG_ENGLISH);

 

Code:

function IsCapsLockOn : Boolean;

begin

Result := 0 <> (GetKeyState(VK_CAPITAL) and $01);

end;

 

Для того, чтобы перехватить нажатие какой-то клавиши на клавиатуре можно использовать зарегистрированную "горячую клавишу" (HotKey). Эта программа пикает при нажатии "1".