国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

用Delphi編寫系統進程監控程序

用Delphi編寫系統進程監控程序

更新時間:2022-05-16 文章作者:未知 信息來源:網絡 閱讀次數:

    本程序通過調用kernel32.dll中的幾個API 函數,搜索并列出系統中除本進程外的所有進程的ID、對應的文件說明符、優先級、CPU占有率、線程數、相關進程信息等有關信息,并可中止所選進程。
    本程序運行時會在系統托盤區加入圖標,不會出現在按Ctrl+Alt+Del出現的任務列表中,也不會在任務欄上顯示任務按鈕,在不活動或最小化時會自動隱藏。不會重復運行,若程序已經運行,再想運行時只會激活已經運行的程序。
    本程序避免程序反復運行的方法是比較獨特的。因為筆者在試用網上介紹一些方法后,發現程序從最小化狀態被激活時,單擊窗口最小化按鈕時,窗口卻不能最小化。于是筆者采用了發送和處理自定義消息的方法。在程序運行時先枚舉系統中已有窗口,若發現程序已經運行,就向該程序窗口發送自定義消息,然后結束。已經運行的程序接到自定義消息后顯示出窗口。

//工程文件procviewpro.dpr
program procviewpro;

uses
  Forms, windows, messages,  main in 'procview.pas' {Form1};

{$R *.RES}
{
//這是系統自動的  
begin
  Application.Initialize;
  Application.Title :='系統進程監控';
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
}

var
  myhwnd:hwnd;

begin
  myhwnd := FindWindow(nil, '系統進程監控'); // 查找窗口
  if myhwnd=0 then                           // 沒有發現,繼續運行    
  begin
    Application.Initialize;
    Application.Title :='系統進程監控';
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end
  else      //發現窗口,發送鼠標單擊系統托盤區消息以激活窗口
    postmessage(myhwnd,WM_SYSTRAYMSG,0,wm_lbuttondown);
    {
     //下面的方法的缺點是:若窗口原先為最小化狀態,激活后單擊窗口最小化按鈕將不能最小化窗口
     showwindow(myhwnd,sw_restore);
     FlashWindow(MYHWND,TRUE);
    }
end.

{
//下面是使用全局原子的方法避免程序反復運行
const
  atomstr='procview';

var
  atom:integer;
begin
  if globalfindatom(atomstr)=0 then
  begin
    atom:=globaladdatom(atomstr);
    with application do
    begin
      Initialize;
      Title := '系統進程監控';
      CreateForm(TForm1, Form1);
      Run;
    end;
    globaldeleteatom(atom);
  end;
end.
}


//單元文件procview.pas
unit procview;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, TLHelp32,Buttons, ComCtrls, ExtCtrls,ShellAPI, MyFlag;

const
  PROCESS_TERMINATE=0;
  SYSTRAY_ID=1;
  WM_SYSTRAYMSG=WM_USER+100;

type
  TForm1 = class(TForm)
    lvSysProc: TListView;
    lblSysProc: TLabel;
    lblAboutProc: TLabel;
    lvAboutProc: TListView;
    lblCountSysProc: TLabel;
    lblCountAboutProc: TLabel;
    Panel1: TPanel;
    btnDetermine: TButton;
    btnRefresh: TButton;
    lblOthers: TLabel;
    lblEmail: TLabel;
    MyFlag1: TMyFlag;
    procedure btnRefreshClick(Sender: TObject);
    procedure btnDetermineClick(Sender: TObject);
    procedure lvSysProcClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure AppOnMinimize(Sender:TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDeactivate(Sender: TObject);
    procedure lblEmailClick(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
    fshandle:thandle;
    FormOldHeight,FormOldWidth:Integer;
    procedure SysTrayOnClick(var message:TMessage);message WM_SYSTRAYMSG;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  idid: dword;
  fp32:tprocessentry32;
  fm32:tmoduleentry32;
  SysTrayIcon:TNotifyIconData;

implementation

{$R *.DFM}

function RegisterServiceProcess(dwProcessID,dwType:integer):integer;stdcall;external 'KERNEL32.DLL';

procedure TForm1.btnRefreshClick(Sender: TObject);
var
  clp:bool;
  newitem1:Tlistitem;
  MyIcon:TIcon;

  IconIndex:word;
  ProcFile : array[0..MAX_PATH] of char;

begin
  MyIcon:=TIcon.create;
  lvSysProc.Items.clear;
  lvSysProc.SmallImages.clear;
  fshandle:=CreateToolhelp32Snapshot(th32cs_snapprocess,0);
  fp32.dwsize:=sizeof(fp32);
  clp:=process32first(fshandle,fp32);
  IconIndex:=0;
  while integer(clp)<>0 do
  begin
    if fp32.th32processid<>getcurrentprocessid then
    begin
      newitem1:=lvSysProc.items.add;
      {
      newitem1.caption:=fp32.szexefile;
      MyIcon.Handle:=ExtractIcon(Form1.Handle,fp32.szexefile,0);
      }

      StrCopy(ProcFile,fp32.szExeFile);
      newitem1.caption:=ProcFile;
      MyIcon.Handle:=ExtractAssociatedIcon(HINSTANCE,ProcFile,IconIndex);
       
      if MyIcon.Handle<>0 then
      begin
        with lvSysProc do
        begin
          NewItem1.ImageIndex:=smallimages.addicon(MyIcon);
        end;
      end;
      with newitem1.subitems do
      begin
        add(IntToHex(fp32.th32processid,4));
        Add(IntToHex(fp32.th32ParentProcessID,4));
        Add(IntToHex(fp32.pcPriClassBase,4));
        Add(IntToHex(fp32.cntUsage,4));
        Add(IntToStr(fp32.cntThreads));
      end;
    end;
    clp:=process32next(fshandle,fp32);
  end;
  closehandle(fshandle);
  lblCountSysProc.caption:=IntToStr(lvSysProc.items.count);
  MyIcon.Free;
end;

procedure TForm1.btnDetermineClick(Sender: TObject);
var
  processhndle:thandle;
begin
  with lvSysProc do
  begin
    if selected=nil then
    begin
      messagebox(form1.handle,'請先選擇要終止的進程!','操作提示',MB_OK+MB_ICONINFORMATION);
    end
    else
    begin
      if messagebox(form1.handle,pchar('終止'+itemfocused.caption+'?')
         ,'終止進程',mb_yesno+MB_ICONWARNING+MB_DEFBUTTON2)=mryes then
      begin
        idid:=strtoint('$'+itemfocused.subitems[0]);
        processhndle:=openprocess(PROCESS_TERMINATE,bool(0),idid);
        if integer(terminateprocess(processhndle,0))=0 then
          messagebox(form1.handle,pchar('不能終止'+itemfocused.caption+'!')
             ,'操作失敗',mb_ok+MB_ICONERROR)
        else
        begin
          Selected.Delete;
          lvAboutProc.Items.Clear;
          lblCountSysProc.caption:=inttostr(lvSysProc.items.count);
          lblCountAboutProc.caption:='';
        end
      end;
    end;
  end;
end;

procedure TForm1.lvSysProcClick(Sender: TObject);
var
  newitem2:Tlistitem;
  clp:bool;
begin
  if lvSysProc.selected<>nil then
  begin
    idid:=strtoint('$'+lvSysProc.itemfocused.subitems[0]);
    lvAboutProc.items.Clear;
    fshandle:=CreateToolhelp32Snapshot(th32cs_snapmodule,idid);
    fm32.dwsize:=sizeof(fm32);
    clp:=Module32First(fshandle,fm32);
    while integer(clp)<>0 do
    begin
      newitem2:=lvAboutProc.Items.add;
      with newitem2 do
      begin
        caption:=fm32.szexepath;
        with newitem2.subitems do
        begin
          add(IntToHex(fm32.th32moduleid,4));
          add(IntToHex(fm32.GlblcntUsage,4));
          add(IntToHex(fm32.proccntUsage,4));
        end;
      end;
      clp:=Module32Next(fshandle,fm32);
    end;
    closehandle(fshandle);
    lblCountAboutProc.Caption:=IntToStr(lvAboutProc.items.count);
  end
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  with application do
  begin
    showwindow(handle,SW_HIDE);    //隱藏任務欄上的任務按鈕
    OnMinimize:=AppOnMinimize;     //最小化時自動隱藏
    OnDeactivate:=FormDeactivate;  //不活動時自動隱藏
    OnActivate:=btnRefreshClick;
  end;
  RegisterServiceProcess(GetcurrentProcessID,1); //將程序注冊為系統服務程序,以避免出現在任務列表中
  with SysTrayIcon do
  begin
    cbSize:=sizeof(SysTrayIcon);
    wnd:=Handle;
    uID:=SYSTRAY_ID;
    uFlags:=NIF_ICON OR NIF_MESSAGE OR NIF_TIP;
    uCallBackMessage:=WM_SYSTRAYMSG;
    hIcon:=Application.Icon.Handle;
    szTip:='系統進程監控';
  end;
  Shell_NotifyIcon(NIM_ADD,@SysTrayIcon);  //將程序圖標加入系統托盤區
  with lvSysProc do
  begin
    SmallImages:=TImageList.CreateSize(16,16);
    SmallImages.ShareImages:=True;
  end;
  FormOldWidth:=self.Width;
  FormOldHeight:=self.Height;
end;

//最小化時自動隱藏
procedure Tform1.AppOnMinimize(Sender:TObject);
begin
  ShowWindow(application.handle,SW_HIDE);
end;

//響應鼠標在系統托盤區圖標上點擊
procedure tform1.SysTrayOnClick(var message:TMessage);
begin
  with message do
  begin
    if (lparam=wm_lbuttondown) or (lparam=wm_rbuttondown) then
    begin
      application.restore;
      SetForegroundWindow(Handle);
      showwindow(application.handle,SW_HIDE);
    end;
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Shell_NotifyIcon(NIM_DELETE,@SysTrayIcon);     //取消系統托盤區圖標
  RegisterServiceProcess(GetcurrentProcessID,0); //取消系統服務程序的注冊
  lvSysProc.SmallImages.Free;
end;

//不活動時自動隱藏
procedure TForm1.FormDeactivate(Sender: TObject);
begin
  application.minimize;
end;


procedure TForm1.lblEmailClick(Sender: TObject);
begin
  if ShellExecute(Handle,'Open',Pchar('Mailto:purpleendurer@163.com'),nil,nil,SW_SHOW)<33 then
MessageBox(form1.Handle,'無法啟動電子郵件軟件!','我很遺憾',MB_ICONINFORMATION+MB_OK);
end;

//當窗體大小改變時調整各組件位置
procedure TForm1.FormResize(Sender: TObject);
begin
with panel1 do top:=top+self.Height-FormOldHeight;
with lvSysProc do
begin
width:=width+self.Width-FormOldWidth;
end;

with lvAboutProc do
begin
height:=height+self.Height-FormOldHeight;
width:=width+self.Width-FormOldWidth;
end;
FormOldWidth:=self.Width;
FormOldHeight:=self.Height;
end;

end.

以上程序在Delphi 2,Windows 95中文版和Delphi 5,Windows 97中文版中均能正常編譯和運行。大家有什么問題請Email to:purpleendurer@163.com與我討論。

作者:黃志斌
廣西河池地區經濟學校 郵編:547000
Email: purpleendurer@163.com 

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        卡一卡二国产精品 | 久久久亚洲精品石原莉奈| 亚洲va欧美va天堂v国产综合| 色哟哟一区二区三区| 亚洲欧美色一区| 666欧美在线视频| 国产精一区二区三区| 国产精品免费aⅴ片在线观看| 色综合中文字幕国产 | 日本一区二区三区四区在线视频 | 精品国产成人在线影院| 国产ts人妖一区二区| 欧美国产成人在线| 欧美视频日韩视频在线观看| 美女视频第一区二区三区免费观看网站| 精品国产电影一区二区| 成年人国产精品| 日韩成人免费电影| 国产精品久久久久久久岛一牛影视| 色天使色偷偷av一区二区| 蜜臀精品一区二区三区在线观看| 国产精品视频yy9299一区| 在线综合亚洲欧美在线视频| 国产xxx精品视频大全| 五月天视频一区| 国产精品成人免费精品自在线观看| 欧美吞精做爰啪啪高潮| 国产麻豆9l精品三级站| 亚洲第一电影网| 亚洲欧美一区二区三区极速播放 | 久久婷婷综合激情| 欧日韩精品视频| 国产剧情一区二区| 日韩**一区毛片| 亚洲一区在线看| 国产欧美一区二区三区在线看蜜臀 | 精品成人一区二区| 欧美三级日本三级少妇99| 不卡av电影在线播放| 久久超级碰视频| 丝袜诱惑制服诱惑色一区在线观看 | 欧美区在线观看| 99国产精品久久久久久久久久久 | 欧美精品 国产精品| 波多野结衣中文一区| 久久爱另类一区二区小说| 亚洲国产视频一区二区| 中文字幕综合网| 中文字幕av一区二区三区高| 精品国产91洋老外米糕| 欧美一区二区黄| 777亚洲妇女| 欧美精品丝袜中出| 欧美午夜不卡在线观看免费| 日本乱码高清不卡字幕| 97se亚洲国产综合自在线| eeuss鲁一区二区三区| 成人深夜在线观看| 国产白丝精品91爽爽久久| 国产精品一区二区在线观看网站 | 日韩高清不卡一区二区| 午夜精品久久久久久久99水蜜桃| 亚洲午夜在线电影| 日韩精品乱码免费| 精彩视频一区二区| 成人一区二区三区视频| 99久久99久久精品免费观看| 91啪亚洲精品| 欧美精品tushy高清| 欧美大片拔萝卜| 久久蜜桃av一区二区天堂| 欧美极品xxx| 亚洲男帅同性gay1069| 亚洲一区二区高清| 蜜臀a∨国产成人精品| 国内精品伊人久久久久av一坑| 国产成人在线视频网站| 91丝袜高跟美女视频| 欧美剧情电影在线观看完整版免费励志电影| 欧美日韩情趣电影| 精品国产亚洲一区二区三区在线观看| 欧美va亚洲va在线观看蝴蝶网| 国产视频视频一区| 亚洲精品视频一区| 毛片av一区二区三区| 成人av高清在线| 91精品国产一区二区人妖| 国产亚洲精品aa| 亚洲一区av在线| 激情综合色综合久久综合| av欧美精品.com| 日韩一区二区三区电影| 中文字幕亚洲一区二区av在线 | 国产精品亚洲人在线观看| 91一区一区三区| 日韩写真欧美这视频| 综合久久久久久| 久久99国产精品免费| 91在线免费播放| 精品久久久久久久久久久久久久久 | 欧美精品高清视频| 国产精品欧美一区喷水| 日本欧美一区二区三区乱码| 99久久精品国产精品久久| 欧美一个色资源| 综合电影一区二区三区| 极品尤物av久久免费看| 欧美精品丝袜久久久中文字幕| 亚洲同性同志一二三专区| 精品午夜久久福利影院 | 在线精品视频一区二区三四| 精品1区2区在线观看| 亚洲综合色在线| 成人福利视频网站| 久久久www成人免费无遮挡大片| 一区二区三区中文在线观看| 国产91露脸合集magnet| 日韩免费电影一区| 香蕉乱码成人久久天堂爱免费| 99视频精品免费视频| 久久精品一区二区三区不卡| 免费成人美女在线观看| 欧美日韩国产首页| 一区二区久久久| 色综合天天综合在线视频| 国产精品电影一区二区| 成人av在线影院| 国产精品久久久久久久蜜臀| 成人免费视频国产在线观看| 久久―日本道色综合久久| 激情国产一区二区| www成人在线观看| 国产精品综合一区二区三区| 久久色.com| 高清成人在线观看| 国产精品天美传媒沈樵| 波多野结衣在线aⅴ中文字幕不卡| 中文字幕高清一区| 99国内精品久久| 亚洲午夜在线视频| 欧美另类videos死尸| 美女国产一区二区三区| 精品国产乱码久久久久久影片| 国产精品综合久久| 中文字幕永久在线不卡| 在线观看免费成人| 日本一区中文字幕| 国产欧美一二三区| 91猫先生在线| 丝袜美腿亚洲一区| 久久久精品tv| 日本久久电影网| 奇米影视一区二区三区| 久久伊人蜜桃av一区二区| 成人动漫一区二区三区| 亚洲一区二区欧美激情| 精品国产一区二区三区久久影院 | 91国模大尺度私拍在线视频| 性欧美大战久久久久久久久| 精品国产伦一区二区三区观看体验 | 精品国产乱码久久久久久夜甘婷婷| 国产精品一区二区视频| 亚洲男同1069视频| 欧美变态tickling挠脚心| 成人综合激情网| 亚洲sss视频在线视频| 久久综合久久综合亚洲| 91视频观看视频| 老汉av免费一区二区三区| 中文字幕不卡在线观看| 制服丝袜成人动漫| 成人午夜大片免费观看| 日一区二区三区| 亚洲欧美日韩系列| 精品国偷自产国产一区| 在线观看一区二区视频| 国产精品一二三| 免费欧美高清视频| 一区二区免费看| 欧美国产1区2区| 日韩欧美成人一区二区| 欧洲国产伦久久久久久久| 国产精品911| 麻豆久久久久久久| 亚洲v日本v欧美v久久精品| 日韩一区有码在线| 国产日产欧美一区二区视频| 制服丝袜在线91| 欧美日韩国产另类一区| 97超碰欧美中文字幕| 懂色av一区二区三区免费观看| 日韩精品亚洲一区二区三区免费| 中文字幕一区二区三区蜜月| 久久精品夜色噜噜亚洲a∨| 88在线观看91蜜桃国自产| 在线观看日韩毛片| 色婷婷av一区| 色哟哟欧美精品| 色综合久久综合网97色综合 | 欧美v日韩v国产v|