国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

異類的屏幕保護

2019-11-18 18:33:54
字體:
來源:轉載
供稿:網友
我們知道,可以設定,當在一定的時間內沒有對計算機進行任何操作時,啟動屏幕保護程序。我們還可以規劃計劃任務,讓電腦在某個設定的時間起動我們想進行的工作。這兩個功能都是不錯的構思,所以微軟把它們一直保留了下來。不過,我們可能有更好的想法,希望能在電腦閑置一段時間后進行我們想做的工作,而不僅僅是啟動屏幕保護程序。我們可以暫且稱它為異類的屏幕保護??墒?,我們怎么實現呢?
不會很難吧?對于我們學會編程的人來說,稍稍動動腦筋就行了。難道不是嗎?
我一開始也是這樣想的。不過,當我真的動手時,發現有一個為難的地方:我們怎樣判斷電腦是閑置的呢?
不過這不要緊,我想。我們可以把啟動的屏幕保護程序指向我們需要的任務嘛。不過,我想還有更好的方法。
這個方法我找到了,而且代碼也很簡潔。我想把我的心得發表出來,與大家共享。
如果我們做過鉤子,不論是鍵盤鉤子、鼠標鉤子,或者是其它的系統鉤子,一定還記得SetWindowsHookEx這個函數吧?我統計了一下,在《電腦愛好者》的程序谷中,這個函數也是頻繁的出現。
不多說啦,今天的程序的核心就是SetWindowsHookEx這個函數了,沒有其它要說明的地方。我原來想對程序添加注釋,不過你看看程序吧,真的沒有必要啊,所以就不多說什么了。哈哈!
程序在DELPHI6.0+WINDOWS ME下編程通過。
unit Unit1;
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls,SHELLAPI;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Timer1: TTimer;
    PRocedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
    var
    Form1: TForm1;
    hHook: integer;
    TimeTotal: integer;
    bNotRunning:boolean;
implementation
{$R *.DFM}
const
    Timescount = 10;
 
function JournalRecordProc(iCode: integer; wParam: wParam; lParam: lParam): LResult; stdcall;
begin
    TimeTotal := 0;
    Result := 0;
end;
 
function StartHook: Boolean;
begin
    Result := False;
    if hHook = 0 then
    begin
        hHook := SetWindowsHookEx(WH_JOURNALRECORD, JournalRecordProc, HInstance, 0);
        if hHook > 0 then        Result := True;
    end;
end;
 
procedure StopHook;
begin
    if hHOok > 0 then
    begin
        UnHookWindowsHookEx(hHook);
        hHook := 0;
    end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
    hHook := 0;
    bNotRunning:=True;
    StartHook;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
    inc(TimeTotal);
    label1.Caption := floattostr(TimeTotal);
    if (TimeTotal > Timescount) and bNotRunning then
    begin
      bNotRunning:=False;
      ShellExecute(Handle, 'open', PChar('notepad'),
               nil, nil, SW_SHOW);
    end;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    stophook;
end;

上一篇:組件實例的命名規則

下一篇:三層結構的設計模式

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

主站蜘蛛池模板: 吉水县| 太康县| 舞阳县| 宜良县| 贵港市| 视频| 中方县| 英超| 崇明县| 巫山县| 容城县| 阿图什市| 宁陵县| 苍山县| 黄陵县| 景洪市| 临沧市| 诸暨市| 赫章县| 栾川县| 渭南市| 清徐县| 横山县| 汉中市| 常熟市| 图们市| 景泰县| 昌平区| 城固县| 托里县| 楚雄市| 子长县| 乐至县| 泗阳县| 通渭县| 龙海市| 宁德市| 平度市| 吴桥县| 修武县| 慈利县|