问题来源: http://www.cnblogs.com/del/archive/2009/01/20/1353117.html#1435746



原理分析:

这需要用到 ShellAPI 单元的两个函数: DragAcceptFiles、DragQueryFile;

用 DragAcceptFiles(窗口句柄, True); 以让窗口能够接受拖放;

然后就等待 WM_DROPFILES 消息, 并用 DragQueryFile 函数处理消息参数, 从而获取信息.



代码文件:


unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls;typeTForm1 = class(TForm)Memo1: TMemo;procedure FormCreate(Sender: TObject);protectedprocedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;end;varForm1: TForm1;implementation{$R *.dfm}uses ShellAPI;procedure TForm1.FormCreate(Sender: TObject);
beginDragAcceptFiles(Handle, True);
end;procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
varp: array[0..255] of Char;i,count: Integer;
begin{先获取拖拽的文件总数}count := DragQueryFile(message.Drop, $FFFFFFFF, nil, 0);{分别获取文件名}for i := 0 to count-1 dobeginDragQueryFile(message.Drop, i, p, SizeOf(p));Memo1.Lines.Add(p); {既然知道了文件名, 当然也可以随手打开它}end;
end;end.

窗体文件:


object Form1: TForm1Left = 0Top = 0Caption = 'Form1'ClientHeight = 154ClientWidth = 261Color = clBtnFaceFont.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = 'Tahoma'Font.Style = []OldCreateOrder = FalseOnCreate = FormCreatePixelsPerInch = 96TextHeight = 13object Memo1: TMemoLeft = 0Top = 0Width = 261Height = 129Align = alTopLines.Strings = ('Memo1')ScrollBars = ssBothTabOrder = 0end
end

转载于:https://www.cnblogs.com/del/archive/2009/01/20/1379130.html

让窗体接受拖放, 并获取拖过来的文件信息 - 回复 海浪问 的问题相关推荐

  1. macOS开发中用TagLib获取、修改音频文件信息

    macOS开发中用TagLib获取.修改音频文件信息 1.概述 TagLib是KDE开源项目的一个很有用的C++函数库,它可以用于读取各种格式的音频文件的ID3信息,如歌名.歌手.专辑.采样率等,同时 ...

  2. C# 获取文件大小,创建时间,文件信息,FileInfo类的属性表

    OpenFileDialog openFileDialog1 = new OpenFileDialog(); if(openFileDialog1.ShowDialog() == DialogResu ...

  3. 向窗体中拖放图片并显示

    Frm_Main.cs View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentMo ...

  4. 拖放获取文件信息的bat代码

    参考:岁月如歌-通过拖曳获取文件信息的bat代码 拖放获取文件信息的bat代码 使用命令行配合7z解压文件时由于每次解压的文件不同,因此搜索了一下拖放识别文件信息的方法,以此方式来减轻工作量 获取文件 ...

  5. 向模态窗体传递参数和获取返回值

    1.向window.showModalDialog 传递参数:   window.showModalDialog 方法的第二个参数就代表父窗体传递到模态窗体的参数值,可以为任何对象或数组),也可以不传 ...

  6. js控制文件拖拽,获取拖拽内容。

    在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题. 拖拽事件 js能够监听到拖拽的事件有 ...

  7. js控制文件拖拽,获取拖拽内容

    在用户拖拽文件到浏览器的某个元素上时,js可以监听到与拖拽相关的事件,并对拖拽结果进行处理,本文讨论下和拖拽文件相关的一些问题,不过没有处理太多关于兼容性的问题. 拖拽事件 js能够监听到拖拽的事件有 ...

  8. sortable使用小知识(vue)-- 使用sortable拖拽插件在初始化循环标签的状态下,如何获取拖拽的数据

    废话 大家搜索这个基本都知道这个插件是干啥的,那我就不废话了.如果真的有人不晓得的话,点这个: sortable.js中文文档. 问题场景 当时产品拿着一个示例给我,我就要做成这样的. emmm,我看 ...

  9. WPF实现窗体在屏幕内移动拖拽,不超过屏幕边界

    WPF实现窗体在屏幕内移动拖拽,不超过屏幕边界 最近在项目中遇到WPF弹出窗体只能在屏幕内移动的需求,使用WndProc截获系统消息.ClipCursor API函数控制鼠标可用区域解决了问题,特意记 ...

最新文章

  1. LeetCode中等题之删除链表的中间节点
  2. mysql需要备份的数据_Mysql根据需要备份数据
  3. Ceph:RBD在线扩容容量
  4. 网易笔试题:最大的奇约数
  5. 51CTO下载专题有奖征集建议:您的期待,我们的方向!
  6. XGBoost的安装与介绍
  7. 洛谷 P5708、P5714、P5720、P5725、P5726、P5732、P5738 题解
  8. Spring AOP知识详解
  9. 微信分享签名无效php_php实现微信分享朋友链接功能
  10. ssm如何在mapper插入实时的时间_第一个ssm整合
  11. mysql mvc javascript_MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。
  12. redhat自带mysql_rhel4卸载系统自带的mysql4.1
  13. 思科将技术团队拆分为四块:安全、物联网、云与网络
  14. 5000字彻底道尽「区块链分叉」真相!
  15. ubuntu安装 opencv-3.4.3
  16. 带动态行的工作流需要我们自己做的
  17. 华为手机灵敏度设置_和平精英华为手机灵敏度怎么设置 上分灵敏度推荐
  18. MTF SFR 简介
  19. NS3 Tutorial 中文版:第三章 快速上手
  20. MATLAB在数学建模中的应用 随手笔记(二)----- 数据拟合方法

热门文章

  1. centos6.8安装oracle12C 详细步骤讲解
  2. 自定义SeekBar 实时显示百分比进度
  3. OCM_第十九天课程:Section9 —》Data Guard _ DATA GUARD 原理/DATA GUARD 应用/DATA GUARD 搭建...
  4. touchesEnded不响应
  5. MySQL/sqlserver查询in操作 查询结果按in集合顺序显示
  6. Android学习笔记进阶十之Matrix错切变换
  7. bootstrap .col-md-6 文字居中问题处理
  8. [译]不要在UI主线程中进行耗时的操作
  9. 浅谈mysql数据库引擎
  10. Django源代码写DetailView与ListView