国产午夜成人免费看片无遮挡_日本免费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>

        欧美精品久久一区二区三区| 欧美一区二区三区系列电影| 91精品国产91综合久久蜜臀| 青青国产91久久久久久| 制服视频三区第一页精品| 日韩激情一区二区| 欧美一级视频精品观看| 日韩精品电影在线观看| 日韩欧美123| 国产精品1区2区3区在线观看| 国产欧美一区二区三区鸳鸯浴 | 成人爱爱电影网址| 国产精品每日更新| 欧美色手机在线观看| 蜜桃免费网站一区二区三区| 久久久99精品免费观看不卡| 91久久人澡人人添人人爽欧美| 日韩精品一级二级 | 国产精品女主播在线观看| gogo大胆日本视频一区| 男男视频亚洲欧美| 亚洲美女在线国产| 国产亚洲欧美日韩日本| 欧美人与禽zozo性伦| av亚洲精华国产精华| 日本亚洲最大的色成网站www| 国产精品免费视频一区| 精品久久人人做人人爱| 欧美视频在线一区二区三区| 国产91色综合久久免费分享| 免费观看日韩电影| 激情六月婷婷综合| 亚洲欧美日韩在线| 亚洲国产成人午夜在线一区| 欧美一区二区三区视频免费| 日本精品裸体写真集在线观看| 激情综合网最新| 午夜影院在线观看欧美| 国产精品国产三级国产普通话蜜臀 | 国产亚洲一区字幕| 91精品国产91久久久久久最新毛片| av在线不卡观看免费观看| 国产在线视频不卡二| 日本不卡在线视频| 亚洲va国产天堂va久久en| 日韩理论在线观看| 成人欧美一区二区三区| 国产精品美女www爽爽爽| 国产欧美日韩三级| 久久久精品免费网站| 一区二区日韩av| 久久久99精品免费观看| 精品久久久久久综合日本欧美| 91精品国产综合久久香蕉的特点| 欧美在线视频你懂得| 在线观看国产日韩| 欧美三日本三级三级在线播放| 91久久精品一区二区| 欧美性欧美巨大黑白大战| 日本韩国欧美三级| 欧美性受xxxx| 日韩网站在线看片你懂的| 欧美久久久久久蜜桃| 91精品蜜臀在线一区尤物| 欧美一区二区成人| 26uuu亚洲| 国产精品对白交换视频| 亚洲精品高清视频在线观看| 亚州成人在线电影| 日本免费新一区视频| 国产精品中文字幕欧美| 懂色av一区二区夜夜嗨| 色综合久久中文字幕| 欧美三区免费完整视频在线观看| 538在线一区二区精品国产| 欧美岛国在线观看| 中文字幕日韩一区二区| 三级亚洲高清视频| 色婷婷综合久久久久中文一区二区| 欧美写真视频网站| 欧美一区二区三区男人的天堂| 久久伊99综合婷婷久久伊| 国产精品女上位| 日韩激情在线观看| 懂色av中文一区二区三区| 欧洲一区二区三区在线| 2021中文字幕一区亚洲| 最新国产成人在线观看| 美女视频免费一区| 色视频成人在线观看免| 精品国产精品网麻豆系列| 亚洲蜜臀av乱码久久精品| 九色|91porny| 欧美视频一区二区三区四区| 国产三区在线成人av| 亚洲福利一区二区| 福利一区在线观看| 欧美精品视频www在线观看| 国产欧美一区二区三区在线看蜜臀| 午夜欧美一区二区三区在线播放| 成人sese在线| 日韩欧美一级二级三级久久久| 国产欧美日韩综合精品一区二区 | 亚洲欧美在线视频| 国产精品美女一区二区| 三级在线观看一区二区| 91国产精品成人| 中文乱码免费一区二区 | 五月天激情综合| 在线亚洲免费视频| 国产精品视频在线看| 国产在线国偷精品产拍免费yy| 欧美日韩国产首页| 一区2区3区在线看| 91蝌蚪porny| 国产精品大尺度| 国产不卡视频一区二区三区| 精品国产电影一区二区| 不卡的av网站| 国产精品视频一区二区三区不卡| 精品一区二区三区免费视频| 欧美精品粉嫩高潮一区二区| 亚洲人成7777| 91麻豆国产福利在线观看| 国产精品视频第一区| 成人免费毛片片v| 中文字幕+乱码+中文字幕一区| 狠狠网亚洲精品| 久久亚洲捆绑美女| 国产麻豆成人精品| 国产亚洲短视频| 成人精品国产免费网站| 国产网站一区二区| 不卡av电影在线播放| ㊣最新国产の精品bt伙计久久| 成人av资源在线| 一区二区三区日韩精品| 在线观看日韩一区| 爽好多水快深点欧美视频| 7777精品伊人久久久大香线蕉 | 水蜜桃久久夜色精品一区的特点| 欧美日韩一区二区电影| 天天色综合成人网| 日韩女优毛片在线| 51精品国自产在线| 日韩精品视频网站| 精品成人一区二区三区| 国产盗摄视频一区二区三区| 日本一区二区三区四区| 96av麻豆蜜桃一区二区| 亚洲一区免费视频| 日韩一级二级三级| 成人精品视频一区二区三区尤物| 亚洲欧美色图小说| 欧美精品乱码久久久久久| 免费在线看成人av| 国产精品久久久久精k8| 欧美理论片在线| 国产成人免费在线| 亚洲一区成人在线| 精品欧美一区二区三区精品久久| 国产精品1区2区| 亚州成人在线电影| 国产色综合一区| 91麻豆精品国产91久久久使用方法| 国产美女视频91| 亚洲国产日产av| 久久久久久久久久久久久久久99| 91在线国产福利| 久久99久久久久| 一区二区三区在线视频观看 | 欧美日韩视频一区二区| 国产剧情一区二区| 亚洲成a人v欧美综合天堂| 久久精品视频在线看| 欧美日产国产精品| 色综合久久综合| 国产精品一区不卡| 免费av成人在线| 亚洲国产一区视频| 国产精品久久777777| 精品国产伦一区二区三区免费 | 6080国产精品一区二区| 国产一区二区三区四区在线观看 | 亚洲精品精品亚洲| 久久久久久久综合色一本| 69久久99精品久久久久婷婷 | 国产精品乱码人人做人人爱| 欧美一级免费观看| 欧美日韩一区久久| 色综合久久中文综合久久牛| 成人一级片在线观看| 久久 天天综合| 久久精品国产精品亚洲综合| 亚洲成人777| 亚洲国产成人91porn| 亚洲综合一区二区三区| 自拍偷在线精品自拍偷无码专区| 国产亚洲va综合人人澡精品| 2023国产精品视频|