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

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

?? todomenu.pas

?? 外國人寫的各種類型的源代碼,有興趣的朋友看看吧!是學習的好東西喲
?? PAS
字號:
unit ToDoMenu;

interface

uses
  Windows, ActiveX, ComObj, ShlObj, ShellApi;

type
  TToDoMenu = class(TComObject, IUnknown, IContextMenu, IShellExtInit)
  private
    fFileName: string;
  protected
    {Declare IContextMenu methods here}
    function QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst, idCmdLast,
      uFlags: UINT): HResult; stdcall;
    function InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult; stdcall;
    function GetCommandString(idCmd, uType: UINT; pwReserved: PUINT;
      pszName: LPSTR; cchMax: UINT): HResult; stdcall;
    {Declare IShellExtInit methods here}
    function IShellExtInit.Initialize = InitShellExt;
    function InitShellExt (pidlFolder: PItemIDList; lpdobj: IDataObject;
      hKeyProgID: HKEY): HResult; stdcall;
  end;

  TToDoMenuFactory = class (TComObjectFactory)
  public
    procedure UpdateRegistry (Register: Boolean); override;
  end;

const
  Class_ToDoMenuMenu: TGUID =
    '{CDF05220-DB84-11D1-B9F1-004845400FAA}';

implementation

uses
  ComServ, Messages, SysUtils, Registry;

// IShellExtInit method
function TToDoMenu.InitShellExt(pidlFolder: PItemIDList;
  lpdobj: IDataObject; hKeyProgID: HKEY): HResult; stdcall;
var
  medium: TStgMedium;
  fe: TFormatEtc;
begin
  Result := E_FAIL;
  // check if the lpdobj pointer is nil
  if Assigned (lpdobj) then
  begin
    with fe do
    begin
      cfFormat := CF_HDROP;
      ptd := nil;
      dwAspect := DVASPECT_CONTENT;
      lindex := -1;
      tymed := TYMED_HGLOBAL;
    end;
    // transform the lpdobj data to a storage medium structure
    Result := lpdobj.GetData(fe, medium);
    if not Failed (Result) then
    begin
      // check if only one file is selected
      if DragQueryFile (medium.hGlobal, $FFFFFFFF, nil, 0) = 1 then
      begin
        SetLength (fFileName, 1000);
        DragQueryFile (medium.hGlobal, 0, PChar (fFileName), 1000);
        // realign string
        fFileName := PChar (fFileName);
        Result := NOERROR;
      end
      else
        Result := E_FAIL;
    end;
    ReleaseStgMedium(medium);
  end;
end;

// context menu methods

function TToDoMenu.QueryContextMenu(Menu: HMENU;
  indexMenu, idCmdFirst, idCmdLast, uFlags: UINT): HResult;
begin
  // add entry only if the program is running
  if FindWindow ('TToDoFileForm', nil) <> 0 then
  begin
    // add a new item to context menu
    InsertMenu (Menu, indexMenu,
      MF_STRING or MF_BYPOSITION, idCmdFirst,
      'Send to ToDoFile');
    // Return number of menu items added
    Result := 1;
  end
  else
    Result := 0;
end;

function TToDoMenu.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult;
var
  hwnd: THandle;
  cds: CopyDataStruct;
begin
  Result := NOERROR;
  // Make sure we are not being called by an application
  if HiWord(Integer(lpici.lpVerb)) <> 0 then
  begin
    Result := E_FAIL;
    Exit;
  end;
  // Make sure we aren't being passed an invalid argument number
  if LoWord(lpici.lpVerb) > 0 then
  begin
    Result := E_INVALIDARG;
    Exit;
  end;
  // execute the command specified by lpici.lpVerb.
  if LoWord(lpici.lpVerb) = 0 then
  begin
    // get the handle of the window
    hwnd := FindWindow ('TToDoFileForm', nil);
    if hwnd <> 0 then
    begin
      // prepare the data to copy
      cds.dwData := 0;
      cds.cbData := length (fFileName);
      cds.lpData := PChar (fFileName);
      // activate the destination window
      SetForegroundWindow (hwnd);
      // send the data
      SendMessage (hwnd, wm_CopyData,
        lpici.hWnd, Integer (@cds));
    end
    else
    begin
      // the program should never get here
      MessageBox(lpici.hWnd,
        'FilesToDo Program not found',
        'Error',
        MB_ICONERROR or MB_OK);
    end;
  end;
end;

function TToDoMenu.GetCommandString(idCmd, uType: UINT; pwReserved: PUINT;
  pszName: LPSTR; cchMax: UINT): HRESULT;
begin
  if idCmd = 0 then
  begin
    // return help string for menu item
    strCopy (pszName, 'Add file to the ToDoFile database');
    Result := NOERROR;
  end
  else
    Result := E_INVALIDARG;
end;

{ TToDoMenuFactory methods }

procedure TToDoMenuFactory.UpdateRegistry(Register: Boolean);
var
  Reg: TRegistry;
begin
  inherited UpdateRegistry (Register);

  Reg := TRegistry.Create;
  try
    // register or remove the menu handler
    if Register then
      Reg.CreateKey (
        '\HKEY_CLASSES_ROOT\*\ShellEx\ContextMenuHandler\' +
        GUIDToString (Class_ToDoMenuMenu))
    else
      Reg.DeleteKey (
        '\HKEY_CLASSES_ROOT\*\ShellEx\ContextMenuHandler\' +
        GUIDToString (Class_ToDoMenuMenu));
  finally
    Reg.Free;
  end;
end;

initialization
  TToDoMenuFactory.Create (
    ComServer, TToDoMenu, Class_ToDoMenuMenu,
    'ToDoMenu', 'ToDoMenu Shell Extension',
    ciMultiInstance, tmApartment);
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩日日骚| 2021中文字幕一区亚洲| 国内成人精品2018免费看| 国产精品久久久久久久久免费相片 | 欧美日韩国产成人在线91| 激情成人综合网| 亚洲综合免费观看高清完整版在线 | 久久久精品tv| 欧美日韩国产综合一区二区 | 337p日本欧洲亚洲大胆精品| 色综合天天综合色综合av| 精品伊人久久久久7777人| 亚洲妇熟xx妇色黄| 亚洲色图一区二区三区| 国产清纯白嫩初高生在线观看91 | 不卡一卡二卡三乱码免费网站| 偷窥少妇高潮呻吟av久久免费| 亚洲欧洲一区二区三区| 久久久影视传媒| 日韩亚洲欧美一区二区三区| 欧美在线啊v一区| 色综合天天综合网天天看片| 成熟亚洲日本毛茸茸凸凹| 久久精品99国产精品| 五月激情综合色| 樱桃国产成人精品视频| 亚洲男人的天堂av| 国产精品国产三级国产普通话三级 | 欧美午夜精品理论片a级按摩| eeuss鲁一区二区三区| 国产精品一区三区| 国模无码大尺度一区二区三区| 欧美a级理论片| 蜜臀久久99精品久久久久宅男| 日韩精品一二三四| 日韩精品午夜视频| 日韩电影一区二区三区| 香蕉av福利精品导航| 亚洲成a人v欧美综合天堂| 亚洲一区在线观看免费观看电影高清| 亚洲天堂精品在线观看| 亚洲人成伊人成综合网小说| 亚洲欧洲综合另类| 一区二区三区日韩欧美| 亚洲精品久久7777| 亚洲无人区一区| 肉色丝袜一区二区| 麻豆精品视频在线观看视频| 美洲天堂一区二卡三卡四卡视频| 看片网站欧美日韩| 国内精品自线一区二区三区视频| 国内精品在线播放| 丁香啪啪综合成人亚洲小说| 成人涩涩免费视频| 97se亚洲国产综合自在线观| 91久久精品日日躁夜夜躁欧美| 欧美午夜寂寞影院| 日韩欧美国产一区二区三区| 久久天堂av综合合色蜜桃网| 欧美国产一区视频在线观看| 亚洲天堂中文字幕| 丝袜a∨在线一区二区三区不卡| 天天综合日日夜夜精品| 日本vs亚洲vs韩国一区三区二区| 精品一区二区三区视频| 成人app在线| 91精品1区2区| 欧美一卡二卡在线| 久久久99精品免费观看不卡| 亚洲日本乱码在线观看| 午夜视黄欧洲亚洲| 国产一区二区三区免费| 色综合一区二区三区| 91麻豆精品国产综合久久久久久| 国产日韩欧美制服另类| 亚洲地区一二三色| 国产剧情av麻豆香蕉精品| 99视频国产精品| 欧美一区二区播放| 最新久久zyz资源站| 日本不卡一区二区三区高清视频| 国产精品一二三区在线| 欧洲国产伦久久久久久久| 欧美va在线播放| 亚洲欧美电影院| 麻豆精品蜜桃视频网站| 一本色道**综合亚洲精品蜜桃冫| 欧美一区二区人人喊爽| 亚洲私人黄色宅男| 极品美女销魂一区二区三区| 在线观看一区不卡| 久久奇米777| 亚洲一区二区三区在线| 国产成人在线看| 欧美日韩国产a| 亚洲欧洲美洲综合色网| 另类调教123区| 欧美视频你懂的| ...av二区三区久久精品| 国产一区二区三区四区五区入口| 欧美三日本三级三级在线播放| 国产精品无码永久免费888| 美女脱光内衣内裤视频久久影院| 一本久久a久久精品亚洲| 欧美激情在线看| 青青青爽久久午夜综合久久午夜| 日本精品免费观看高清观看| 久久精品免视看| 捆绑变态av一区二区三区| 欧美日韩一区二区在线观看| 亚洲欧美激情在线| 99久久久精品免费观看国产蜜| 久久蜜桃av一区精品变态类天堂| 日韩国产欧美三级| 精品视频在线看| 亚洲综合在线视频| 91在线精品一区二区三区| 国产午夜精品福利| 国产一区二区免费在线| 91精品国产91久久久久久最新毛片| 又紧又大又爽精品一区二区| 99re成人精品视频| 中文字幕一区二区日韩精品绯色| 国产91丝袜在线18| 国产欧美一区二区精品仙草咪| 激情深爱一区二区| 日韩一级免费观看| 免费成人在线影院| 91精品国产综合久久久久久久| 亚洲午夜久久久久| 欧美日韩在线播| 婷婷成人激情在线网| 欧美高清视频在线高清观看mv色露露十八| 亚洲主播在线观看| 欧美在线观看视频在线| 亚洲成av人在线观看| 在线不卡a资源高清| 日日夜夜免费精品| 欧美一区二区视频在线观看2020 | 精品福利在线导航| 久久99国产精品久久99果冻传媒| 日韩午夜电影av| 九色|91porny| 中文字幕第一区综合| www..com久久爱| 亚洲黄色录像片| 欧美精品三级日韩久久| 青青草成人在线观看| 精品国产乱子伦一区| 国产成人三级在线观看| 中文字幕av不卡| 91在线视频播放地址| 性欧美大战久久久久久久久| 777精品伊人久久久久大香线蕉| 免费国产亚洲视频| 久久久久久久综合日本| eeuss鲁片一区二区三区| 亚洲欧美日韩一区| 欧美日韩国产首页| 韩国精品主播一区二区在线观看 | 欧美在线观看一区二区| 日本美女一区二区三区| 久久嫩草精品久久久精品| 成人a区在线观看| 一区二区三区四区五区视频在线观看| 欧美卡1卡2卡| 国产黄色成人av| 一区2区3区在线看| 日韩小视频在线观看专区| 成人黄色一级视频| 日韩精品免费专区| 国产亚洲va综合人人澡精品 | 欧美日韩国产区一| 国产一区二区三区四区在线观看| 最近日韩中文字幕| 精品美女一区二区| 一本一道综合狠狠老| 久久精品国产一区二区| 亚洲欧洲日产国码二区| 欧美一级黄色大片| 91啪在线观看| 国产一区二区三区四| 亚洲午夜在线观看视频在线| 久久久久久久av麻豆果冻| 在线观看国产91| 国产一区在线观看麻豆| 亚洲一区二区三区视频在线播放| 精品久久久久久久一区二区蜜臀| 色综合久久88色综合天天免费| 久久99精品久久久久婷婷| 亚洲激情自拍视频| 国产亚洲欧美日韩日本| 欧美精品一卡二卡| aaa欧美色吧激情视频| 久久国内精品自在自线400部| 亚洲欧美偷拍另类a∨色屁股| 精品国产在天天线2019| 欧美日韩在线精品一区二区三区激情| 国产 欧美在线| 精品一区二区三区日韩|