频道分类

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

作者:admin 来源: 日期:2019/10/16 0:41:28 人气: 标签:

 

这段Delphi代码可以用来控制键盘上的某一个键的按下和释放操作,比如你希望从软件模拟按下Print Screen按键对屏幕截图,可以使用这个程序。

 

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}

//======================================================================

//该代码片段来自于: http://www.sharejs.com/codes/delphi/8739