通过代码取消空闲状态…



我正在检测机器空闲状态,如果空闲,我将执行一个操作。

其中一个操作必须是取消此状态,否则它将进入循环
当我在空闲循环中执行时,我想防止再次进入空闲循环,我该怎么做?

防止再次进入的一种方法是记住是否已输入事件处理程序:

type
  TForm1 = class(TForm)
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
  private
    { Private-Deklarationen }
    FInOnIdle: Boolean;
  public
    { Public-Deklarationen }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
  if FInOnIdle then Exit;
  FInOnIdle := True;
  try
    
  finally
    FInOnIdle := False;
  end;
end;

在表单的vars中添加一个标志,用于测试是否已经处于空闲循环中:

interface
type TForm1 = class(TForm)
...
private
...
  InIdleLoop: boolean;
...
implementation
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
begin
  if InIdleLoop then exit;
  InIdleLoop:= true
  try
   //Do your idle processing here
  finally
    InIdleLoop:= false;
  end; {try}
end;

按下一个键,我想这将完成

  keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0);
  keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0);

按下shift键,系统会认为计算机不再空闲。。。

最新更新