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

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

?? hotkeyspy.pas

?? 熱鍵控件DELPHI開發程序用到的控件希望對你有幫助
?? PAS
字號:
{**********************************************************}
{                                                          }
{  THotKeySpy Component Version 1.01                       }
{                                                          }
{  Function: Spy keyboard event when application running.  }
{                                                          }
{  HotKeySpy is a modificatory edition for AMHotKey        }
{  component( Author: Alexander Meeder ). I think          }
{  something is not good in AMHotKey, so I Modified it.    }
{                                                          }
{  If you make cool changes to it, please send them to me. }                                
{                                                          }
{  Email: haoem@126.com                                    }
{  URL: http://haoxg.yeah.net                              }
{                                                          }
{**********************************************************}

unit HotKeySpy;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs;

type
  THotKeySpy = class;

  TWMHotKey = record
    Msg: Cardinal;
    idHotKey: Word;
    Modifiers: Integer;
    VirtKey : Integer;
  end;

  TModifier = (moShift, moControl, moAlt, moWin);
  TModifiers = set of TModifier;

  TVirtKey = (vkNone, vkCancel, vkBack, vkTab, vkClear, vkReturn, vkPause, vkCapital, vkEscape,
              vkSpace, vkPrior, vkNext, vkEnd, vkHome, vkLeft, vkUp, vkRight, vkDown,
              vkSelect, vkExecute, vkSnapshot, vkInsert, vkDelete, vkHelp,
              vk0, vk1, vk2, vk3, vk4, vk5, vk6, vk7, vk8, vk9,
              vkA, vkB, vkC, vkD, vkE, vkF, vkG, vkH, vkI, vkJ, vkK, vkL, vkM,
              vkN, vkO, vkP, vkQ, vkR, vkS, vkT, vkU, vkV, vkW, vkX, vkY, vkZ,
              vkNumpad0, vkNumpad1, vkNumpad2, vkNumpad3, vkNumpad4,
              vkNumpad5, vkNumpad6, vkNumpad7, vkNumpad8, vkNumpad9,
              vkMultiply, vkAdd, vkSeparator, vkSubtract, vkDecimal, vkDivide,
              vkF1, vkF2, vkF3, vkF4, vkF5, vkF6, vkF7, vkF8, vkF9, vkF10, vkF11, vkF12,
              vkF13, vkF14, vkF15, vkF16, vkF17, vkF18, vkF19, vkF20, vkF21, vkF22, vkF23, vkF24,
              vkNumlock, vkScroll, vkApps);

  THotKeyEvent = procedure(Sender: TObject; HotKeyIndex: Word) of object;

  THotKeyItem = class(TCollectionItem)
  private
    FEnabled: boolean;
    FModifiers: TModifiers;
    FRegistered: Boolean;
    FVirtKey: TVirtKey;
    FOnHotKey: TNotifyEvent;

    procedure SetEnabled(Value: Boolean);
    procedure SetModifiers(Value: TModifiers);
    procedure SetVirtKey(Value: TVirtkey);
    function GetVirtKey: TVirtKey;

    procedure RegisterHK;
    procedure UnregisterHK;
    procedure ReRegisterHK;
  protected
    function GetDisplayName: string; override;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;

    property Registered: Boolean read FRegistered Default false;
    function GetHotKeyName: string;
  published
    property Enabled: boolean read FEnabled write SetEnabled;
    property Modifiers: TModifiers read FModifiers write SetModifiers;
    property VirtKey: TVirtKey read GetVirtKey write SetVirtKey default vkNone;
    property OnHotKey: TNotifyEvent read FOnHotKey write FOnHotKey;
  end;

  THotKeys = class(TCollection)
  private
    FHotKeySpy: THotKeySpy;
    
    function GetItem(Index: Integer): THotKeyItem;
    procedure SetItem(Index: Integer; Value: THotKeyItem);
  protected
    function GetOwner: TPersistent; override;
  public
    constructor Create(AHotKeySpy: THotKeySpy);
    destructor Destroy; override;

    function Add: THotKeyItem;
    property HotKeys[Index: Integer]: THotKeyItem read GetItem write SetItem; default;
  end;

  THotKeySpy = class(TComponent)
  private
    FHotKeys: THotKeys;
    FWindowHandle: HWnd;
    FOnHotKeyEvents: THotKeyEvent;

    procedure SetHotKeys(Value: THotKeys);
    procedure WndProc(var Msg: TMessage);
  protected
    procedure Loaded; override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    function ShortCutToVirtKey(Value: TShortCut): TVirtKey;
    function VirtKeyToShortCut(Value: TVirtKey): TShortCut;
    procedure SetAllEnabled;
    procedure SetAllDisabled;
  published
    property HotKeys: THotKeys read FHotKeys write SetHotKeys;
    property OnHotKeys: THotKeyEvent read FOnHotKeyEvents write FOnHotKeyEvents;
  end;

procedure Register;

implementation

var
  VirtKeys : array[TVirtKey] of UInt =
             ($00, $03, $08, $09, $0C, $0D, $13, $14, $1B,
              $20, $21, $22, $23, $24, $25, $26, $27, $28,
              $29, $2B, $2C, $2D, $2E, $2F,
              $30, $31, $32, $33, $34, $35, $36, $37, $38, $39,
              $41, $42, $43, $44, $45, $46, $47, $48, $49, $4A,
              $4B, $4C, $4D, $4E, $4F, $50, $51, $52, $53, $54,
              $55, $56, $57, $58, $59, $5A,
              $60, $61, $62, $63, $64, $65, $66, $67, $68, $69,
              $6A, $6B, $6C, $6D, $6E, $6F,
              $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $7A, $7B,
              $7C, $7D, $7E, $7F, $80, $81, $82, $83, $84, $85, $86, $87,
              $90, $91, $5D);

  VirtKeyStr : array[TVirtKey] of string =
             ('None', 'Cancel', 'Back', 'Tab', 'Clear', 'Return', 'Pause', 'Capital', 'Escape',
              'Space', 'Prior', 'Next', 'End', 'Home', 'Left', 'Up', 'Right', 'Down',
              'Select', 'Execute', 'Snapshot', 'Insert', 'Delete', 'Help',
              '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
              'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
              'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
              'Numpad0', 'Numpad1', 'Numpad2', 'Numpad3', 'Numpad4',
              'Numpad5', 'Numpad6', 'Numpad7', 'Numpad8', 'Numpad9',
              'Multiply', 'Add', 'Separator', 'Subtract', 'Decimal', 'Divide',
              'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9', 'F10', 'F11', 'F12',
              'F13', 'F14', 'F15', 'F16', 'F17', 'F18', 'F19', 'F20', 'F21', 'F22', 'F23', 'F24',
              'Numlock', 'Scroll', 'Apps');


procedure Register;
begin
  RegisterComponents('DayDream', [THotKeySpy]);
end;

{ THotKeySpy }

constructor THotKeySpy.Create(AOwner: TComponent);
var
  I: integer;
begin
  for I := 0 to AOwner.ComponentCount - 1 do
    if AOwner.Components[I] is THotKeySpy then
      raise Exception.Create('No more than one THotKeySpy-component on a form');

  if (AOwner =  nil) or not (AOwner is TForm) then
    raise Exception.Create('The owner of THotKeySpy must be a form');

  inherited Create(AOwner);
  FHotKeys := THotKeys.Create(Self);

  FWindowHandle := AllocateHWnd(WndProc);
end;

destructor THotKeySpy.Destroy;
begin
  FHotKeys.Free;
  DeallocateHWnd(FWindowHandle);
  inherited Destroy;
end;

procedure THotKeySpy.SetAllEnabled;
var
  I: integer;
begin
  for I := 0 to HotKeys.Count - 1 do
    HotKeys[I].Enabled := true;
end;

procedure THotKeySpy.SetAllDisabled;
var
  I: integer;
begin
  for I := 0 to HotKeys.Count - 1 do
    HotKeys[I].Enabled := false;
end;

procedure THotKeySpy.SetHotKeys(Value: THotKeys);
begin
  FHotKeys.Assign(Value);
end;

procedure THotKeySpy.WndProc(var Msg: TMessage);
begin
  if (Owner as TWinControl) = nil then exit;

  if Msg.Msg = WM_HOTKEY then
  begin
    with TWMHotKey(Msg) do
    begin
      if Assigned(HotKeys[idHotKey].FOnHotKey) then HotKeys[idHotKey].FOnHotKey(Self);
      if Assigned(FOnHotKeyEvents) then FOnHotKeyEvents(Self, idHotKey);
    end;
  end else
    Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam, Msg.lParam);
end;

procedure THotKeySpy.Loaded;
var
  I: integer;
begin
  if not (csDesigning in ComponentState) then
    for I := 0 to HotKeys.Count - 1 do
      if HotKeys[I].Enabled then HotKeys[I].RegisterHK;
end;

function THotKeySpy.ShortCutToVirtKey(Value: TShortCut): TVirtKey;
var
  i: Uint;
begin
  for i := 0 to UInt(High(VirtKeys)) do
    if Value = VirtKeys[TVirtKey(i)] then
    begin
      Result := TVirtKey(i);
      exit;
    end;
  Result := vkNone;
end;

function THotKeySpy.VirtKeyToShortCut(Value: TVirtKey): TShortCut;
begin
  Result := TShortCut(VirtKeys[Value]);
end;

{ THotKeys }

constructor THotKeys.Create(AHotKeySpy: THotKeySpy);
begin
  inherited Create(THotKeyItem);
  FHotKeySpy := AHotKeySpy;
end;

destructor THotKeys.Destroy;
begin
  inherited Destroy;
end;

function THotKeys.GetItem(Index: Integer): THotKeyItem;
begin
  Result := THotKeyItem(inherited GetItem(Index));
end;

procedure THotKeys.SetItem(Index: Integer; Value: THotKeyItem);
begin
  inherited SetItem(Index, Value);
end;

function THotKeys.GetOwner: TPersistent;
begin
  Result := FHotKeySpy;
end;

function THotKeys.Add: THotKeyItem;
begin
  Result := THotKeyItem(inherited Add);
end;

{ THotKeyItem }

constructor THotKeyItem.Create(Collection: TCollection);
begin
  inherited Create(Collection);
  FEnabled := True;
  FRegistered := False;
  FVirtKey := vkNone;
end;

destructor THotKeyItem.Destroy;
begin
  SetEnabled(false);
  inherited Destroy;
end;

procedure THotKeyItem.SetEnabled(Value: boolean);
begin
  if (Value <> FEnabled) then
  begin
    FEnabled := Value;

    if not (csDesigning in THotKeySpy(THotKeys(GetOwner).GetOwner).ComponentState) then
      if FEnabled then
        RegisterHK
      else
        UnregisterHK;
  end;
end;

procedure THotKeyItem.SetModifiers(Value: TModifiers);
begin
  if Value <> FModifiers then
  begin
    FModifiers := Value;
    ReRegisterHK;
  end;
end;

procedure THotKeyItem.SetVirtKey(Value: TVirtKey);
begin
  if Value <> FVirtKey then
  begin
    FVirtKey := Value;
    if Value = vkNone then Enabled := False;
    ReRegisterHK;
  end;
end;

function THotKeyItem.GetVirtKey: TVirtKey;
begin
  Result := FVirtKey;
end;

function THotKeyItem.GetDisplayName: string;
begin
  Result := '';
  if moShift    in Modifiers then Result := Result + 'Shift';
  if moControl  in Modifiers then Result := Result + 'Control';
  if moAlt      in Modifiers then Result := Result + 'Alt';
  if moWin      in Modifiers then Result := Result + 'Win';
  if Result = '' then
    Result := VirtKeyStr[VirtKey]
  else
    Result := Result + '_' + VirtKeyStr[VirtKey];

  if Result = '' then Result := inherited GetDisplayName;
end;

function THotKeyItem.GetHotKeyName: string;
begin
  Result := GetDisplayName;
end;

procedure THotKeyItem.Assign(Source: TPersistent);
begin
  if Source is THotKeyItem then
  begin
    Enabled := THotKeyItem(Source).Enabled;
    Modifiers := THotKeyItem(Source).Modifiers;
    VirtKey := THotKeyItem(Source).VirtKey;
    Exit;
  end;
  inherited Assign(Source);
end;

procedure THotKeyItem.RegisterHK;

  function ModToFlag(Modifiers : TModifiers): UInt;
  begin
    Result := 0;
    if moShift    in Modifiers then Result := Result or MOD_SHIFT;
    if moControl  in Modifiers then Result := Result or MOD_CONTROL;
    if moAlt      in Modifiers then Result := Result or MOD_ALT;
    if moWin      in Modifiers then Result := Result or MOD_WIN;
  end;

begin
  FRegistered := False;
  if (VirtKey <> vkNone) then
    FRegistered := RegisterHotKey(THotKeySpy(THotKeys(GetOwner).GetOwner).FWindowHandle,
                                  Index, ModToFlag(Modifiers), VirtKeys[FVirtKey]);
end;

procedure THotKeyItem.UnregisterHK;
begin
  if FRegistered then
    FRegistered := not UnregisterHotKey(THotKeySpy(THotKeys(GetOwner).GetOwner).FWindowHandle, Index);
end;

procedure THotKeyItem.ReRegisterHK;
begin
  if not (csDesigning in THotKeySpy(THotKeys(GetOwner).GetOwner).ComponentState) then
    if FEnabled then
    begin
      if FRegistered then UnregisterHK;
      RegisterHK;
    end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人午夜精品天堂一二香蕉| 国产精品久久久久aaaa樱花| 国产·精品毛片| 亚洲免费毛片网站| 国产亚洲综合色| 在线成人免费观看| 99久久免费国产| 老司机免费视频一区二区| 亚洲女人的天堂| 久久精品人人做人人爽97| 91精品综合久久久久久| 91麻豆成人久久精品二区三区| 国产毛片精品视频| 亚洲电影欧美电影有声小说| 国产精品夫妻自拍| 国产午夜三级一区二区三| 69成人精品免费视频| av网站免费线看精品| 国产一区二区三区国产| 水蜜桃久久夜色精品一区的特点| 成人免费在线播放视频| 精品99一区二区| 91精品免费观看| 欧美猛男超大videosgay| 91色九色蝌蚪| av电影天堂一区二区在线观看| 国产美女娇喘av呻吟久久| 伦理电影国产精品| 日本成人在线电影网| 丝袜国产日韩另类美女| 亚洲高清视频的网址| 亚洲少妇屁股交4| 国产精品乱人伦| 国产精品午夜春色av| 久久久精品免费网站| 精品成人一区二区三区四区| 日韩免费性生活视频播放| 欧美酷刑日本凌虐凌虐| 欧美日韩一区二区在线观看视频| 91老师国产黑色丝袜在线| 不卡av在线免费观看| 丁香天五香天堂综合| 国产成人精品一区二区三区网站观看| 久久99国产精品尤物| 国产一区二区三区国产| 国产精品一卡二卡在线观看| 国产经典欧美精品| 国产成人精品影视| av在线播放一区二区三区| 91一区二区三区在线观看| 91视视频在线观看入口直接观看www | 国产风韵犹存在线视精品| 精品一区二区在线免费观看| 久久国产精品露脸对白| 国产精一区二区三区| 不卡电影免费在线播放一区| 91美女片黄在线| 欧美性感一区二区三区| 7878成人国产在线观看| 日韩丝袜美女视频| 国产视频不卡一区| 亚洲猫色日本管| 日本不卡在线视频| 国产成人午夜99999| 99视频精品全部免费在线| 欧美视频一区二区三区| 精品日韩一区二区三区| 国产精品美女久久久久aⅴ| 亚洲视频一区二区在线| 亚洲va国产va欧美va观看| 免费在线观看精品| 成人av在线资源网站| 欧美日韩国产一级二级| www日韩大片| 亚洲女与黑人做爰| 久久精品噜噜噜成人88aⅴ| 国产99精品国产| 欧美精品国产精品| 国产日韩欧美亚洲| 夜夜嗨av一区二区三区四季av| 免费精品视频最新在线| 成人综合婷婷国产精品久久免费| 在线视频国产一区| 精品国产乱码久久久久久图片| 中文字幕一区二区不卡| 日本欧美一区二区在线观看| 不卡的av中国片| 日韩午夜激情电影| 亚洲美腿欧美偷拍| 久久99久久久久久久久久久| 色系网站成人免费| 精品少妇一区二区三区日产乱码 | 精品久久久久久久一区二区蜜臀| 国产精品国产三级国产普通话三级| 亚洲成人一二三| 成人午夜视频免费看| 在线不卡a资源高清| 国产精品白丝在线| 精品一区二区三区在线播放| 色哟哟国产精品| 日本一区二区视频在线观看| 青青草成人在线观看| 色综合中文字幕国产 | 成人免费av网站| 正在播放亚洲一区| 久久99精品视频| 欧洲av在线精品| 国产精品素人一区二区| 免费成人在线播放| 欧美特级限制片免费在线观看| 国产精品福利影院| 国产一区二区在线观看视频| 911精品国产一区二区在线| 亚洲人成精品久久久久久| 国产sm精品调教视频网站| 欧美不卡在线视频| 成人一区二区三区视频| 久久综合精品国产一区二区三区| 午夜免费欧美电影| 色噜噜狠狠一区二区三区果冻| 欧美国产精品久久| 国产一区二区三区综合| 欧美一二三区在线观看| 天天av天天翘天天综合网| 在线免费不卡电影| 亚洲欧美日韩国产成人精品影院 | 欧美成人女星排名| 三级在线观看一区二区| 精品视频一区二区不卡| 亚洲精品伦理在线| 91视视频在线观看入口直接观看www| 欧美国产精品劲爆| 成人激情免费视频| 中文字幕精品综合| 成人av午夜电影| 中文字幕一区二区三区在线观看| 成人午夜又粗又硬又大| 国产精品久久久久久一区二区三区| 国产精品亚洲成人| 久久久91精品国产一区二区精品 | 精品少妇一区二区三区视频免付费| 男男gaygay亚洲| 日韩一区二区免费电影| 久久99热狠狠色一区二区| 亚洲精品一线二线三线| 国产一区二区视频在线播放| 日本一区免费视频| 91丨porny丨国产| 亚洲第一主播视频| 日韩写真欧美这视频| 国产美女一区二区三区| 国产精品久久夜| 一本一本大道香蕉久在线精品 | 国产精品剧情在线亚洲| 99久久精品免费精品国产| 亚洲免费观看在线视频| 欧美影院午夜播放| 麻豆91免费观看| 久久久久97国产精华液好用吗| 成人自拍视频在线观看| 日韩一区在线免费观看| 欧美优质美女网站| 日韩电影在线免费看| 久久日一线二线三线suv| 粉嫩13p一区二区三区| 亚洲免费大片在线观看| 欧美一区二区三区电影| 国产99久久久精品| 一区二区三区欧美日韩| 91麻豆精品国产91久久久久久| 国产九色精品成人porny| 亚洲三级电影网站| 91精品国产综合久久久蜜臀图片| 国产一区视频网站| 亚洲免费在线观看视频| 日韩精品中午字幕| 91理论电影在线观看| 日韩av中文字幕一区二区三区| 久久先锋影音av| 91极品美女在线| 国产在线精品视频| 夜色激情一区二区| 精品国产一区二区三区忘忧草 | 97久久超碰国产精品电影| 同产精品九九九| 中文字幕第一页久久| 欧美久久久久久久久| 成人午夜激情影院| 麻豆精品在线看| 亚洲精品精品亚洲| 久久久久久久久岛国免费| 欧美视频在线观看一区二区| 激情av综合网| 午夜不卡在线视频| 亚洲男人的天堂av| 国产三级一区二区三区| 欧美一区二区不卡视频| 一本久久a久久免费精品不卡| 久久99精品久久久久久动态图 | 欧美老年两性高潮|