⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufmain.pas

📁 托盘程序,程序运行时.将该程序在右下栏显示运行状态
💻 PAS
字号:
unit ufMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls,ShellApi, Menus,FileCtrl,Registry,StdCtrls, ImgList;

const
  MI_ICONEVENT=WM_USER+1;
type
  TfMain = class(TForm)
    Timer1: TTimer;
    PopupMenu1: TPopupMenu;
    Normal: TMenuItem;
    N2: TMenuItem;
    CloseN: TMenuItem;
    Label1: TLabel;
    mini: TMenuItem;
    N4: TMenuItem;
    max: TMenuItem;
    N5: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure CloseNClick(Sender: TObject);
    procedure NormalClick(Sender: TObject);
    procedure miniClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure maxClick(Sender: TObject);
  private
    MyNotifyStruct: TNotifyIconData;
    icount:integer;
    { Private declarations }
  public
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
    procedure IconOnClick(var message:TMessage); message MI_ICONEVENT;
    { Public declarations }
  end;

var
  fMain: TfMain;

implementation




{$R *.dfm}

procedure TfMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  nid: TNotifyIconData;
begin
  if MessageDlg('确定要退出吗?',mtConfirmation,
    [mbYes, mbNo],0) = mrYes then
  begin
    nid.cbSize := sizeof(nid); // nid变量的字节数
    nid.uID := 1; //内部标识,与加入小图标时的数一致
    nid.Wnd := Handle; //主窗口句柄
    Shell_NotifyIcon(NIM_DELETE, @nid); //去掉小图标
    action:=cafree;
  end
  else
  begin
    action:=canone;
  end;
end;

procedure TfMain.FormShow(Sender: TObject);
begin
timer1.Enabled:=true;
icount:=0;
end;


procedure TfMain.WMSysCommand(var Msg: TWMSysCommand);
begin
     if (Msg.CmdType=SC_MINIMIZE) then
     begin
          ShowWindow(Application.Handle,SW_HIDE);
     end;
     DefaultHandler(Msg);
end;

procedure TfMain.FormCreate(Sender: TObject);
begin
  with Application do
    SetWindowLong(Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW or GetWindowLong(Handle,
 GWL_EXSTYLE));

  with MyNotifyStruct do begin
    cbSize := sizeof(MyNotifyStruct);
    Wnd := Handle;
    uID := 1;
    uFlags :=  NIF_ICON or NIF_TIP or NIF_MESSAGE;
    uCallbackMessage := MI_ICONEVENT;
    hIcon := Application.Icon.Handle;
    szTip := '系统托盘程序';
  end;
  Shell_NotifyIcon(NIM_ADD, @MyNotifyStruct);
  ShowWindow(Application.Handle,SW_HIDE);
  SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
end;




procedure TfMain.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @MyNotifyStruct);
end;



procedure TfMain.IconOnClick(var message: TMessage);
var
  p:TPoint;
begin
  //如果按下的是鼠标右键,则显示弹出菜单
  if(message.lParam=WM_RBUTTONDOWN)then
  begin
    GetCursorPos(p);
    PopupMenu1.Popup(p.x,p.y);
  end;
end;



procedure TfMain.FormActivate(Sender: TObject);
begin
  fmain.width:=330;
  fmain.Height:=93;
  ShowWindow(Application.Handle,SW_HIDE);
end;

procedure TfMain.CloseNClick(Sender: TObject);
begin
close;

end;



procedure TfMain.NormalClick(Sender: TObject);
begin
  fmain.repaint;
  fmain.width:=330;
  fmain.height:=93;
  fmain.show;
  showwindow(application.handle,SW_ShowNORMAL);
end;

procedure TfMain.miniClick(Sender: TObject);
begin
  showwindow(application.handle,SW_Minimize);
end;










procedure TfMain.Timer1Timer(Sender: TObject);
begin
  timer1.enabled:=false;
  icount:=icount+1;
  if icount>4 then icount:=1;
  case icount of
  1:  MyNotifyStruct.hIcon:=LoadIcon(hinstance,'ARROWA');
  2:  MyNotifyStruct.hIcon:=LoadIcon(hinstance,'ARROWB');
  3:  MyNotifyStruct.hIcon:=LoadIcon(hinstance,'ARROWC');
  4:  MyNotifyStruct.hIcon:=LoadIcon(hinstance,'ARROWD');
  end;
  Shell_NotifyIcon(NIM_MODIFY,@MyNotifyStruct);
  timer1.enabled:=true;
end;




procedure TfMain.maxClick(Sender: TObject);
begin
    showwindow(application.handle,SW_Maximize);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -