写一个函数
MyMessage(var Msg:TMsg;handled:Boolean);
在其中加入你的判断条件,就是程序是否被激活的条件,
在程序的主窗体的onCreate事件中加入:
Application.Message:=MyMessage;
应该可以的。
今天没法给你实现代码,如果还没法解决,请写信给我:
My E-mail:[email protected]
我一定会给你解决的。

解决方案 »

  1.   

    在你的OnTimer事件中加入这样一句代码:
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
    vhdc:hdc;
    fetchcolor:Tcolor;
    begin
    if Application.Active then 
    begin
      //your code.........
    end;
    end;
      

  2.   

    我想是不是要用HOOK呀?不太清楚你要做什么?
    也许HOOK可以达到你的目的。
      

  3.   

    应该用键盘HOOK,我给你个例子://keyhook
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
    Function KeyHook(iCode: Integer; wParam: Longint; var Msg: TMsg): Longint; stdcall;
    type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}Function KeyHook(iCode: Integer; wParam: Longint; var Msg: TMsg): Longint; stdcall;
    begin
      messagebox(0,pchar(inttostr(icode)),pchar(inttostr(wParam)),mb_ok);
      Keyhook:=1;//为1时应收窗口将收不到键盘消息
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      tag:=SetWindowsHookEx(WH_KEYBOARD, @Keyhook, hInstance, 0);
      SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, 0, 0);
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
     UnhookWindowsHookEx(tag);
     SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, 0, 0);
    end;end.
      

  4.   

    O!方才没看到你的程序代码,
    你点了一下其它的程序你的程序不是活动的了,所以代码不好用了。
    HOOK应该可以