人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

運用Delphi完成系統狀態欄圖標

運用Delphi完成系統狀態欄圖標

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

  下面以一個具體的例子,詳細介紹一下利用Delphi實現系統狀態欄圖標的步驟和方法。

  1.創建一個應用程序,在主窗體上增加一個TpopupMenu組件。并為該彈出選單組件增加選單項Exit,標題為“退出”! 

  2.在Uses中添加ShellAPI,因為在系統狀態欄中增加圖標時需調用ShellAPI中的函數Shell_NotifyIconA。該函數需要兩個參數,其中一個是TnotifyIconDataA結構,需在主窗體中增加TnotifyIconDataA類型的全局變量ntida。  

  3.定義消息mousemsg,并編寫主窗體的mousemessage消息處理函數,此函數說明在圖標上用鼠標左鍵單擊時,會打開應用程序窗口;用鼠標右鍵單擊時,會彈出一個選單! 

  下面給出步驟2和3的實現代碼: 

  unit Unit1;
  interface
  uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, Menus, shellapi;
  const
  mousemsg = wm_user + 1; //自定義消息,用于處理用戶在圖標上點擊鼠標的事件
  iid = 100; //用戶自定義數值,在TnotifyIconDataA類型全局變量ntida中使用
  type
  TForm1 = class(TForm)
  ......
  private
  //自定義消息處理函數,處理鼠標點擊圖標事件
  procedure mousemessage(var message: tmessage); message mousemsg;
  public
  { Public declarations }
  end;
  var
  Form1: TForm1;
  ntida: TNotifyIcondataA;
  //用于增加和刪除系統狀態圖標
  implementation
  {$R .DFM}
  procedure TForm1.mousemessage(var message: tmessage);
  var
  mousept: TPoint; //鼠標點擊位置
  begin
  inherited;
  if message.LParam = wm_rbuttonup then begin //用鼠標右鍵點擊圖標
  getcursorpos(mousept); //獲取光標位置
  popupmenu1.popup(mousept.x, mousept.y);
  //在光標位置彈出選單
  end;
  if message.LParam = wm_lbuttonup then begin //用鼠標左鍵點擊圖標
  //顯示應用程序窗口
  ShowWindow(Handle, SW_SHOW);
  //在任務欄上顯示應用程序窗口
  ShowWindow(Application.handle, SW_SHOW);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
  not (GetWindowLong(Application.handle, GWL_EXSTYLE)
  or WS_EX_TOOLWINDOW AND NOT WS_EX_APPWINDOW));
  end;
  message.Result := 0;
  end 

  5.編寫Tform1.OnClose的代碼如下:  

  procedure TForm1.FormClose(Sender:TObject; var Action: TCloseAction);
  begin
  Action := caNone; //不對窗體進行任何操作
  ShowWindow(Handle, SW_HIDE); //隱藏主窗體
  //隱藏應用程序窗口在任務欄上的顯示
  ShowWindow(Application.Handle, SW_HIDE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
  GetWindowLong(Application.handle, GWL_EXSTYLE)
  or WS_EX_TOOLWINDOW AND NOT WS_EX _APPWINDOW);
  end;
  procedure TForm1.FormClose(Sender:TObject; var Action: TCloseAction);
  begin
  Action := caNone; //不對窗體進行任何操作
  ShowWindow(Handle, SW_HIDE); //隱藏主窗體
  //隱藏應用程序窗口在任務欄上的顯示
  ShowWindow(Application.Handle, SW_HIDE);
  SetWindowLong(Application.Handle, GWL_EXSTYLE,
  GetWindowLong(Application.handle, GWL_EXSTYLE)
  or WS_EX_TOOLWINDOW AND NOT WS_EX _APPWINDOW);
  end; 

  6.編寫Exit代碼如下:  

  當用戶點擊Exit時實現完全退出應用程序。具體代碼如下: 

  procedure TForm1.ExitClick(Sender:TObject);
  begin
  //為ntida賦值,指定各項參數
  ntida.cbSize := sizeof(tnotifyicondataa);
  ntida.wnd := handle;
  ntida.uID := iid;
  ntida.uFlags := nif_icon + nif_tip + nif_message;
  ntida.uCallbackMessage := mousemsg;
  ntida.hIcon := Application.Icon.handle;
  ntida.szTip := 'Icon';
  shell_notifyicona(NIM_DELETE, @ntida);
  //刪除已有的應用程序圖標
  Application.Terminate;
  //中斷應用程序運行,退出應用程序
  end  

  通過以上步驟,我們即可用Delphi輕松實現系統狀態欄圖標。

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

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 会东县| 宣武区| 三都| 沭阳县| 沂源县| 北宁市| 兴隆县| 开封市| 龙井市| 嘉祥县| 宝应县| 丰顺县| 晴隆县| 双辽市| 通州区| 吉木萨尔县| 广元市| 松江区| 内丘县| 皋兰县| 科尔| 邹平县| 阿荣旗| 建德市| 奉化市| 芒康县| 无极县| 临清市| 九台市| 安溪县| 青冈县| 临湘市| 双辽市| 凤凰县| 清苑县| 西林县| 靖宇县| 高州市| 固始县| 安国市| 湟源县|