实现右键菜单集成FTP功能

要完成这个功能,主要分两大块东西要实现 ,一是创建外壳菜单,二是ftp上传功能,正好这两方面可百度到完美的代码,需要做的就是整合到一起。

1、右击时插入自定义的菜单:

function Tmyshell.QueryContextMenu(Menu: HMENU; indexMenu, idCmdFirst,
  idCmdLast, uFlags: UINT): HResult;

  var
       appreg ,dbreg: HBITMAP;

begin



   Result := E_FAIL;


 if ((uFlags and CMF_DEFAULTONLY) = CMF_DEFAULTONLY) then
   begin
   Result :=MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0 );
    exit;
   end;


  if not Initialized then
   begin
     Result :=MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 0 );  //等于直接赋零
     exit;
   end;






 try
   insertmenu(menu,indexmenu,1200,0,nil);
                                                            //先下后上
  insertmenu(menu,indexmenu,MF_STRING OR MF_BYPOSITION,idCmdFirst+1,'上传到数据库');
  insertmenu(menu,indexmenu,MF_STRING OR MF_BYPOSITION,idCmdFirst+0,'上传到应用');
   insertmenu(menu,indexmenu,1200,0,nil);
  //
  dbReg := LoadImage(HInstance, MakeIntResource(102),IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS);
  SetMenuItemBitmaps(Menu, idCmdFirst+1, MF_BYCOMMAND, dbReg, dbReg);


  appReg := LoadImage(HInstance, MakeIntResource(101),IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS);
  SetMenuItemBitmaps(Menu, idCmdFirst, MF_BYCOMMAND, appReg, appReg);






  except
   Result := E_FAIL;//因为返回值可能改变,所以需要再次赋FAIL
   exit;
  end;


   此处用函数代替了VC中的宏,相当于MAKE_HRESULT(0, 0, 2+1 );
 Result :=MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 3 );


end;

2、点击自定义的菜单后执行的动作:

function Tmyshell.InvokeCommand(var lpici: TCMInvokeCommandInfo): HResult;
var
  I: Integer;


begin
        Result := E_FAIL;
        //OleInitialize(nil);


       if hiword(integer(lpici.lpVerb))<>0 then exit;
        Result := S_OK;






       case loword(integer(lpici.lpVerb)) of

           i:  begin      创建idftp对象,并上传               end;

          m: begin       创建idftp对象,并上传               end;

  当然,目录文件名的获取都是在 SEInitialize函数中完成,网上任何一往篇shell编程的文章都有谈到。

关于图标的生成,就是准备14X14的256色位图资源文件

101 BITMAP "app.bmp"
102 BITMAP "db.bmp"

编译过后就会生成相关的资源文件。基本上没有难点,需要做的就是你来整合一下,最终效果如图示:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值