zoukankan      html  css  js  c++  java
  • 让自己的软件实现拖拽打开文件(覆盖WM_DROPFILES,使用DragQueryFile,DragFinish API函数)

                                 作者: 帅宏军

    //声明

    protected
        procedure WMDROPFILES(var Msg : TMessage); message WM_DROPFILES;

    ------------------------------------------------------------------------------------------------------------------------

    //实现

    procedure TFormMain.WMDROPFILES(var Msg: TMessage);
    var
      i, n: Integer;
      Buffer: Array[0..255] of Char;
    begin
      //得到拖拽文件数量
      n := DragQueryFile(Msg.wParam, $FFFFFFFF, Buffer, 255);

      //处理选择多个文件
      for i := 0 to n - 1 do
      begin
        //获取拖拽文件名
        DragQueryFile(Msg.wParam, i, Buffer, 255);

        //文件名就在Buffer里面了
        if UpperCase(ExtractFileExt(Buffer)) = '.BZLX' then
        begin
          //判断文件是否已经打开
          if UpperCase(Buffer) = UpperCase('test.bzlx') then
          begin
            MessageDlg('文件test.bzlx已经打开!', (mtInformation),[mbOK],0);
            exit;
          end;

          //打开文件
          OpenFile(Buffer);

          exit;
        end;
      end;

      //结束拖拽
      DragFinish(Msg.wParam);
    end; 

    ------------------------------------------------------------------------------------------------------------------------

    //初始化

    procedure TFormMain.FormCreate(Sender: TObject);
    begin
      //使窗口句柄可以接收拖拽操作

      DragAcceptFiles(Handle, True);

    end;

    版权声明:【敦格作品】,欢迎引用,注明出处:http://blog.csdn.net/shuaihj https://blog.csdn.net/shuaihj/article/details/7046515
  • 相关阅读:
    JS伪3D 图形透视效果
    源码安装apache及配置转发
    SpringSecutiry权限管理手册
    解决SMARTFORMS 中table 控件单行跨页的问题
    Cluster Table
    uva-133 The Dole Queue
    第三届蓝桥杯C++本科B组决赛解题报告(更新中)
    uva-673 Parentheses Balance
    VS2010不能编译SQLServer2005的Microsoft.SQLServer.ManagedDTS.dll的解决方法
    IOS设计模式学习(21)享元
  • 原文地址:https://www.cnblogs.com/findumars/p/9113439.html
Copyright © 2011-2022 走看看