亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bstrayicon.pas

?? 一套支持Delphi的VCL庫
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
{*******************************************************************}
{                                                                   }
{       Almediadev Visual Component Library                         }
{       BusinessSkinForm                                            }
{       Version 6.15                                                }
{                                                                   }
{       Copyright (c) 2000-2008 Almediadev                          }
{       ALL RIGHTS RESERVED                                         }
{                                                                   }
{       Home:  http://www.almdev.com                                }
{       Support: support@almdev.com                                 }
{                                                                   }
{*******************************************************************}

unit bsTrayIcon;

{$P+,S-,W-,R-}
{$WARNINGS OFF}
{$HINTS OFF}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Menus, ShellApi, ExtCtrls, bsSkinMenus;

const
  WM_TRAYNOTIFY = WM_USER + 1024;
  IconID = 1;

var
  WM_TASKBARCREATED: Cardinal;

type
  TbsNotifyIconDataEx = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array[0..127] of AnsiChar;
    dwState: DWORD;
    dwStateMask: DWORD;
    szInfo: array[0..255] of AnsiChar;
    uTimeout: UINT;
    szInfoTitle: array[0..63] of AnsiChar;
    dwInfoFlags: DWORD;
  end;

  TbsCycleEvent = procedure(Sender: TObject; NextIndex: Integer) of object;
  TbsBalloonHintIcon = (bsbitNone, bsbitInfo, bsbitWarning, bsbitError);

  TbsTrayIcon = class(TComponent)
  private
    FEnabled: Boolean;
    FIcon: TIcon;
    FIconVisible: Boolean;
    FHint: String;
    FShowHint: Boolean;
    FPopupMenu: TbsSkinPopupMenu;
    FPopupByLeftButton: Boolean;
    FOnBalloonHintClick,
    FOnClick,
    FOnDblClick: TNotifyEvent;
    FOnCycle: TbsCycleEvent;
    FOnMouseDown,
    FOnMouseUp: TMouseEvent;
    FOnMouseMove: TMouseMoveEvent;
    FMinimizedOnStart: Boolean;
    FMinimizeToTray: Boolean;
    FClickStart: Boolean;
    FClickReady: Boolean;
    AnimateTimer: TTimer;
    ClickTimer: TTimer;
    IsDblClick: Boolean;
    FIconIndex: Integer;
    FDesignPreview: Boolean;
    SettingPreview: Boolean;
    SettingMDIForm: Boolean;           
    FIconList: TImageList;
    FCycleIcons: Boolean;
    FAnimateTimerInterval: Cardinal;
    OldAppProc, NewAppProc: Pointer;
    OldWndProc, NewWndProc: Pointer;
    FWindowHandle: HWND;               
    procedure SetDesignPreview(Value: Boolean);
    procedure SetCycleIcons(Value: Boolean);
    procedure SetAnimateTimerInterval(Value: Cardinal);
    procedure TimerCycle(Sender: TObject);
    procedure TimerClick(Sender: TObject);
    procedure HandleIconMessage(var Msg: TMessage);
    function InitIcon: Boolean;
    procedure SetIcon(Value: TIcon);
    procedure SetIconVisible(Value: Boolean);
    procedure SetIconList(Value: TImageList);
    procedure SetIconIndex(Value: Integer);
    procedure SetHint(Value: String);
    procedure SetShowHint(Value: Boolean);
    procedure PopupAtCursor;
    // Hook methods
    procedure HookApp;
    procedure UnhookApp;
    procedure HookAppProc(var Msg: TMessage);
    procedure HookForm;
    procedure UnhookForm;
    procedure HookFormProc(var Msg: TMessage);
  protected
    IconData: TbsNotifyIconDataEx;       
    procedure Loaded; override;
    function LoadDefaultIcon: Boolean; virtual;
    function ShowIcon: Boolean; virtual;
    function HideIcon: Boolean; virtual;
    function ModifyIcon: Boolean; virtual;
    procedure Click; dynamic;
    procedure DblClick; dynamic;
    procedure CycleIcon; dynamic;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); dynamic;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); dynamic;
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
    procedure DoMinimizeToTray; dynamic;
    procedure Notification(AComponent: TComponent; Operation: TOperation);
      override;
  public
    property Handle: HWND read IconData.Wnd;
    property WindowHandle: HWND read FWindowHandle;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    function Refresh: Boolean;
    function BitmapToIcon(const Bitmap: TBitmap; const Icon: TIcon;
      MaskColor: TColor): Boolean;
    procedure ShowMainForm;
    procedure HideMainForm;
    function ShowBalloonHint(Title: String; Text: String;
                             IconType: TbsBalloonHintIcon): Boolean;
    function HideBalloonHint: Boolean;
  published
    property DesignPreview: Boolean read FDesignPreview
      write SetDesignPreview default False;
    property IconList: TImageList read FIconList write SetIconList;
    property CycleIcons: Boolean read FCycleIcons write SetCycleIcons
      default False;
    property AnimateTimerInterval: Cardinal read FAnimateTimerInterval
      write SetAnimateTimerInterval;
    property Enabled: Boolean read FEnabled write FEnabled default True;
    property Hint: String read FHint write SetHint;
    property ShowHint: Boolean read FShowHint write SetShowHint
      default True;
    property Icon: TIcon read FIcon write SetIcon stored True;
    property IconVisible: Boolean read FIconVisible write SetIconVisible
      default True;
    property IconIndex: Integer read FIconIndex write SetIconIndex;
    property PopupMenu: TbsSkinPopupMenu read FPopupMenu write FPopupMenu;
    property PopupByLeftButton: Boolean read FPopupByLeftButton write FPopupByLeftButton
      default False;
    property MinimizedOnStart: Boolean read FMinimizedOnStart write FMinimizedOnStart
      default False;
    property MinimizeToTray: Boolean read FMinimizeToTray write FMinimizeToTray
      default False;
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
    property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick;
    property OnMouseDown: TMouseEvent read FOnMouseDown write FOnMouseDown;
    property OnMouseUp: TMouseEvent read FOnMouseUp write FOnMouseUp;
    property OnMouseMove: TMouseMoveEvent read FOnMouseMove write FOnMouseMove;
    property OnCycle: TbsCycleEvent read FOnCycle write FOnCycle;
    property OnBalloonHintClick: TNotifyEvent read FOnBalloonHintClick write FOnBalloonHintClick;
  end;

implementation

const
  NIIF_NONE            = $00000000;
  NIIF_INFO            = $00000001;
  NIIF_WARNING         = $00000002;
  NIIF_ERROR           = $00000003;
  NIF_INFO             = $00000010;
  NIN_BALLOONUSERCLICK = WM_USER + 5;

constructor TbsTrayIcon.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  SettingMDIForm := True;
  FIconVisible := True;
  FMinimizeToTray := True;
  FEnabled := True;
  FShowHint := True;         
  SettingPreview := False;
  WM_TASKBARCREATED := RegisterWindowMessage('TaskbarCreated');
  FIcon := TIcon.Create;
  IconData.cbSize := SizeOf(TbsNotifyIconDataEx);
  IconData.wnd := AllocateHWnd(HandleIconMessage);
  IconData.uId := IconID;
  IconData.uFlags := NIF_ICON + NIF_MESSAGE + NIF_TIP;
  IconData.uCallbackMessage := WM_TRAYNOTIFY;
  FWindowHandle := GetWindowLong(IconData.wnd, GWL_HWNDPARENT);

  AnimateTimer := TTimer.Create(Self);
  AnimateTimer.Enabled := False;
  AnimateTimer.Interval := FAnimateTimerInterval;
  AnimateTimer.OnTimer := TimerCycle;

  ClickTimer := TTimer.Create(Self);
  ClickTimer.Enabled := False;
  ClickTimer.Interval := GetDoubleClickTime;
  ClickTimer.OnTimer := TimerClick;

  if not (csDesigning in ComponentState)
  then
    begin
      if FIcon.Handle = 0
      then
        if LoadDefaultIcon
        then
          FIcon.Handle := Application.Icon.Handle;
      HookApp;
      if Owner is TWinControl then HookForm;
    end;
end;


destructor TbsTrayIcon.Destroy;
begin
  SetIconVisible(False);
  SetDesignPreview(False);
  FIcon.Free;
  DeallocateHWnd(IconData.Wnd);
  AnimateTimer.Free;
  ClickTimer.Free;
  if not (csDesigning in ComponentState)
  then
    begin
      UnhookApp;
      if Owner is TWinControl then UnhookForm;
    end;
  inherited Destroy;
end;


procedure TbsTrayIcon.Loaded;
begin
  inherited Loaded;
  if Owner is TWinControl
  then
    if (FMinimizedOnStart) and not (csDesigning in ComponentState)
    then
      begin
        FIconVisible := True;
        MinimizeToTray := True;
        Application.ShowMainForm := False;
        ShowWindow(Application.Handle, SW_HIDE);
      end;
  ModifyIcon;
  SetIconVisible(FIconVisible);
end;

function TbsTrayIcon.LoadDefaultIcon: Boolean;
begin
  Result := True;
end;

procedure TbsTrayIcon.Notification(AComponent: TComponent;
  Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (AComponent = FIconList) and (Operation = opRemove)
  then
    begin
      FIconList := nil;
    end;
  if (AComponent = FPopupMenu) and (Operation = opRemove)
  then
    begin
      FPopupMenu := nil;
    end;
end;

procedure TbsTrayIcon.HookApp;
begin
  OldAppProc := Pointer(GetWindowLong(Application.Handle, GWL_WNDPROC));
  NewAppProc := MakeObjectInstance(HookAppProc);
  SetWindowLong(Application.Handle, GWL_WNDPROC, LongInt(NewAppProc));
end;

procedure TbsTrayIcon.UnhookApp;
begin
  if Assigned(OldAppProc)
  then
    SetWindowLong(Application.Handle, GWL_WNDPROC, LongInt(OldAppProc));
  if Assigned(NewAppProc)
  then
    FreeObjectInstance(NewAppProc);
  NewAppProc := nil;
  OldAppProc := nil;
end;

procedure TbsTrayIcon.HookAppProc(var Msg: TMessage);
begin
  case Msg.Msg of

    WM_SIZE:
      if Msg.wParam = SIZE_MINIMIZED
      then
        begin
          if FMinimizeToTray then DoMinimizeToTray;
        end;

    WM_WINDOWPOSCHANGED:
      begin
        if SettingMDIForm
        then
          if Application.MainForm <> nil
          then
            begin
              if (Application.MainForm.FormStyle = fsMDIForm) then
              if FMinimizedOnStart then
              ShowWindow(Application.Handle, SW_HIDE);
              SettingMDIForm := False;
            end;
      end;
  end;

  if (Msg.Msg = WM_TASKBARCREATED) and FIconVisible then ShowIcon;

  Msg.Result := CallWindowProc(OldAppProc, Application.Handle,
                               Msg.Msg, Msg.wParam, Msg.lParam);
end;

procedure TbsTrayIcon.HookForm;
begin
  if (Owner as TWinControl) <> nil
  then
    begin
      OldWndProc := Pointer(GetWindowLong((Owner as TWinControl).Handle, GWL_WNDPROC));
      NewWndProc := MakeObjectInstance(HookFormProc);
      SetWindowLong((Owner as TWinControl).Handle, GWL_WNDPROC, LongInt(NewWndProc));
    end;
end;

procedure TbsTrayIcon.UnhookForm;
begin
  if ((Owner as TWinControl) <> nil) and (Assigned(OldWndProc))
  then
    SetWindowLong((Owner as TWinControl).Handle, GWL_WNDPROC, LongInt(OldWndProc));
  if Assigned(NewWndProc)
  then
    FreeObjectInstance(NewWndProc);
  NewWndProc := nil;
  OldWndProc := nil;
end;

procedure TbsTrayIcon.HookFormProc(var Msg: TMessage);
begin
  case Msg.Msg of
    WM_SHOWWINDOW:
     begin
       if (Msg.lParam = 0) and (Msg.wParam = 1)
       then
         begin
           ShowWindow(Application.Handle, SW_RESTORE);
           SetForegroundWindow(Application.Handle);
           SetForegroundWindow((Owner as TWinControl).Handle);
         end;
     end;
    WM_ACTIVATE: begin
       if Assigned(Screen.ActiveControl)
       then
        if (Msg.WParamLo = WA_ACTIVE) or (Msg.WParamLo = WA_CLICKACTIVE)
        then
          if Assigned(Screen.ActiveControl.Parent)
          then
            begin
              if HWND(Msg.lParam) <> Screen.ActiveControl.Parent.Handle
              then SetFocus(Screen.ActiveControl.Handle);
            end
        else
          begin
            if HWND(Msg.lParam) <> Screen.ActiveControl.Handle
            then SetFocus(Screen.ActiveControl.Handle);
          end;
    end;
  end;
  Msg.Result := CallWindowProc(OldWndProc, (Owner as TWinControl).Handle,
                Msg.Msg, Msg.wParam, Msg.lParam);
end;

procedure TbsTrayIcon.HandleIconMessage(var Msg: TMessage);

  function ShiftState: TShiftState;
  begin
    Result := [];
    if GetAsyncKeyState(VK_SHIFT) < 0
    then Include(Result, ssShift);
    if GetAsyncKeyState(VK_CONTROL) < 0
    then Include(Result, ssCtrl);
    if GetAsyncKeyState(VK_MENU) < 0
    then Include(Result, ssAlt);
  end;

var
  Pt: TPoint;
  Shift: TShiftState;
  I: Integer;
  M: TMenuItem;
begin
  if Msg.Msg = WM_TRAYNOTIFY
  then

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美熟乱第一页| 欧美无人高清视频在线观看| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美精品乱码久久久久久按摩| 91一区二区在线| 色一情一乱一乱一91av| 一本大道久久a久久综合婷婷| 色欧美片视频在线观看| 国产91精品一区二区| 风流少妇一区二区| 99国产精品99久久久久久| 91年精品国产| 欧美理论电影在线| 欧美大黄免费观看| 国产日韩欧美一区二区三区乱码| 国产日韩v精品一区二区| 欧美韩日一区二区三区四区| 国产精品毛片a∨一区二区三区| 国产精品久久二区二区| 亚洲一级电影视频| 麻豆高清免费国产一区| 国产精品 日产精品 欧美精品| 懂色av一区二区三区免费观看 | 91美女视频网站| 欧美在线观看一区二区| 欧美一级片免费看| 国产亲近乱来精品视频| 亚洲人快播电影网| 日本不卡一区二区| 国产酒店精品激情| 欧美亚洲一区三区| 久久综合中文字幕| 亚洲人吸女人奶水| 美女脱光内衣内裤视频久久影院| 国产超碰在线一区| 欧美日韩高清不卡| 国产精品欧美综合在线| 亚洲综合男人的天堂| 国产成人aaa| 在线观看91av| 亚洲欧美怡红院| 韩国视频一区二区| 色综合久久综合中文综合网| 91精品国产综合久久国产大片| 国产精品高潮呻吟| 久久国产剧场电影| 欧美日本在线视频| 亚洲免费在线观看视频| 国产伦精品一区二区三区视频青涩| 欧美性一二三区| 国产精品福利一区二区| 久草在线在线精品观看| 欧美日韩在线精品一区二区三区激情| 国产精品美日韩| 麻豆一区二区三区| 欧美日韩黄视频| 黄一区二区三区| 精品视频1区2区3区| 亚洲天堂久久久久久久| 国产精品一区三区| 26uuu精品一区二区| 美女久久久精品| 欧美一区二区三区四区五区| 亚洲精品国产视频| 91色婷婷久久久久合中文| 国产午夜精品久久| 国产精品主播直播| 久久久精品国产免费观看同学| 久久福利资源站| 精品欧美一区二区三区精品久久| 香蕉成人啪国产精品视频综合网| 欧美私人免费视频| 亚洲一区二区中文在线| 欧美性猛交xxxx黑人交| 亚洲综合免费观看高清完整版| 日本乱人伦aⅴ精品| 亚洲黄色尤物视频| 在线中文字幕一区二区| 亚洲国产成人tv| 欧美在线啊v一区| 日韩精品乱码av一区二区| 日韩欧美一级二级三级| 久久国产麻豆精品| 久久午夜羞羞影院免费观看| 欧洲av在线精品| 亚洲一级二级三级在线免费观看| 欧美日韩卡一卡二| 男人的天堂久久精品| 26uuu亚洲综合色| 成人avav在线| 一区二区三区国产| 欧美日本不卡视频| 国产精品一二三四区| 自拍偷拍国产精品| 欧美日韩国产综合一区二区三区 | 2023国产精华国产精品| 国产精品亚洲成人| 18欧美亚洲精品| 5566中文字幕一区二区电影| 国产又黄又大久久| 欧美激情一区二区三区蜜桃视频| 91在线视频播放地址| 亚洲国产综合视频在线观看| 欧美va亚洲va国产综合| 91在线观看高清| 日本中文一区二区三区| 国产欧美久久久精品影院| 色www精品视频在线观看| 麻豆成人在线观看| 亚洲欧洲另类国产综合| 欧美日韩mp4| 懂色av中文一区二区三区| 午夜精品123| 国产精品免费av| 欧美日韩国产bt| 福利电影一区二区| 蜜桃久久久久久| 国产精品视频一二三区 | 成人丝袜视频网| 亚洲国产精品久久人人爱蜜臀 | 午夜一区二区三区在线观看| ww久久中文字幕| 欧美精品1区2区3区| 成人免费福利片| 激情文学综合丁香| 亚洲高清免费在线| 亚洲人成网站色在线观看 | 9人人澡人人爽人人精品| 日本不卡高清视频| 亚洲小少妇裸体bbw| 中文字幕高清一区| 26uuuu精品一区二区| 欧美精品一二三四| 91色在线porny| 成人精品国产福利| 国产成人精品影视| 加勒比av一区二区| 麻豆高清免费国产一区| 日日夜夜一区二区| 亚洲一区免费视频| 亚洲一区影音先锋| 尤物av一区二区| 亚洲蜜臀av乱码久久精品| 国产精品久久久久久久久果冻传媒| 欧美电影免费观看完整版| 51精品视频一区二区三区| 欧美三级视频在线播放| 欧美视频中文一区二区三区在线观看| 成人激情图片网| 成人性色生活片| 成人性色生活片| 成a人片国产精品| 91亚洲男人天堂| 色婷婷精品久久二区二区蜜臂av| 99久久伊人精品| 91老师片黄在线观看| 91色视频在线| 欧美特级限制片免费在线观看| 欧美日韩在线播放三区四区| 欧美在线制服丝袜| 欧美日韩成人激情| 日韩欧美国产三级| 久久天天做天天爱综合色| 国产农村妇女精品| 亚洲欧美日韩国产另类专区 | 日韩欧美一级二级三级| 欧美精品一区二区在线观看| 国产亚洲制服色| 欧美激情中文字幕| 亚洲情趣在线观看| 亚洲第一综合色| 久久精品久久综合| 国产69精品久久久久毛片 | 26uuu色噜噜精品一区二区| 中文av一区特黄| 亚洲韩国精品一区| 激情伊人五月天久久综合| 国产不卡在线播放| 91福利社在线观看| 欧美精品一区二区三区蜜桃视频| 久久久av毛片精品| 一区二区三国产精华液| 免费观看成人鲁鲁鲁鲁鲁视频| 国产成人精品免费视频网站| 欧洲人成人精品| 2017欧美狠狠色| 亚洲午夜久久久久久久久电影院| 免费成人美女在线观看| jiyouzz国产精品久久| 欧美日韩一区精品| 国产嫩草影院久久久久| 日韩电影免费在线看| www.综合网.com| 日韩欧美高清一区| 亚洲另类一区二区| 国产一区二三区好的| 欧美日韩在线免费视频| 日本一区二区三级电影在线观看 | 蜜桃视频在线一区| 99热99精品|