Delphi 操作键盘按下和释放操作

Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

Type
   TForm1 = Class(TForm)
      ReleaseScrollLockBtn: TButton;
      SetScrollLockBtn: TButton;
      Procedure SetScrollLockBtnClick(Sender: TObject);
      Procedure ReleaseScrollLockBtnClick(Sender: TObject);
   Private
      { Private declarations }
   Public
      { Public declarations }
   End;

Var
   Form1 : TForm1;

Implementation

{$R *.DFM}

//----------------------------------------------------------------------
// The Numlock key can be pressed this way under NT but NOT under W95!
// The ScrollLock and CapsLock can be pressed this way under NT and W95
// as well.
// You can also simulate a PrintScreen (SnapShot).
// See the Delphi help file for soft-pressing this key.
// (Set the blinking cursor in the word: "keybd_event" and press: "F1")
//----------------------------------------------------------------------
Procedure SetNumLock(Bo : Boolean);

Var
   keyState : TKeyBoardState;

Begin
GetKeyboardstate(keyState);
// keyState[VK_SCROLL] = 0 means the led is off
// keyState[VK_SCROLL]  0 means the led is on
If ( (Bo = True) and (keyState[VK_SCROLL] = 0) ) or
   ( (Bo = False) and (keyState[VK_SCROLL]  0) ) then
      Begin
      // Simulate a depress
      keybd_event(VK_SCROLL,45,KEYEVENTF_EXTENDEDKEY,0);
      // Simulate a release
      keybd_event(VK_SCROLL,45,KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP,0);
      End;
End;
//----------------------------------------------------------------------
Procedure TForm1.SetScrollLockBtnClick(Sender: TObject);

Begin
SetNumLock(TRUE);
End;
//----------------------------------------------------------------------
Procedure TForm1.ReleaseScrollLockBtnClick(Sender: TObject);

Begin
SetNumLock(FALSE);
End;
//----------------------------------------------------------------------
End. {of Unit1}
//======================================================================