DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: maxding
今日帖子: 37
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 jingzu (123456) ★☆☆☆☆ -
盒子活跃会员
2023/9/16 8:54:36
标题:
收不到WM_DROPFILES消息 浏览:756
加入我的收藏
楼主: 奇怪了,D10.42编译,在WIN10下收不到WM_DROPFILES消息,大老们什么问题?

unit Unit1;
//download by http://www.codesc.net
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls,ShellApi;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure WMDROPFILES(var Message: TWMDROPFILES);message WM_DROPFILES;    
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Form1.Handle, True);
end;

procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES);
var
  NumFiles : longint;
  i : longint;
  buffer : array[0..255] of char;
begin
  NumFiles := DragQueryFile(Message.Drop,$FFFFFFFF,nil,0);
  //有多少文件被放下
  for i := 0 to (NumFiles - 1) do begin
  //循环处理放下的文件,此处只是显示其文件名
    DragQueryFile(Message.Drop,
          i,
          @buffer,
          sizeof(buffer));
   //获取文件名,保存到buffer
    Form1.Memo1.Lines.Add(buffer);
  //显示文件名
  end;
  DragFinish(Message.Drop);
//拖放完毕,释放系统在传输文件名时分配的内存。
end;

end.
----------------------------------------------
永远是DELPHI初学者。
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2023/9/16 9:07:53
1楼: win10 默认拦截了  百度有文章要API处理后才可以接收
----------------------------------------------
-
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
2023/9/16 9:25:52
2楼: MSWindows 10 22H2
RAD Studio 11.3 (VCL)

1)
LDQFresult := 
DragQueryFile( 
....HDROP(  Msg.WParam ),
....LDQF_indexFile {$FFFFFFFF = ALL},
....L_FilenameBuffer {ARRAY[0..MAX_PATH] OF WIDECHAR},
....LDQF_BufferSizeInChars {MAX_PATH}
);

2)
now YOU NEED process "each entry" = file on the message ...

DragQueryFile(
....HDROP(  Msg.WParam ),
....i,   <----- each file in a "FOR looping"....
....LFilenameBuffer,
....255
);

3) if a "FILE" do this....  if a "DIRECTORY" do that...  <---- verify the "attribute of each ITEM"...

4) at end...  
DragFinish(
....HDROP(Msg.WParam)
);


,
此帖子包含附件:
GIF 图像
大小:616.8K
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
2023/9/16 9:46:59
3楼: many files or a folder

...
此帖子包含附件:
GIF 图像
大小:682.9K
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
男 jingzu (123456) ★☆☆☆☆ -
盒子活跃会员
2023/9/16 12:31:58
4楼: @emailx45 d11.3我也试过了,也不行呢?请您把代码发上来,看看有什么不同?
----------------------------------------------
永远是DELPHI初学者。
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2023/9/16 12:37:02
5楼: https://blog.csdn.net/weixin_42455056/article/details/90644773
https://blog.csdn.net/ayang1986/article/details/79569521
https://love.junzimu.com/archives/3225
https://bbs.csdn.net/topics/391852691
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 jingzu (123456) ★☆☆☆☆ -
盒子活跃会员
2023/9/16 12:57:07
6楼: @keymark  谢谢,按您提供的资料,解决了。

加上:
  ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
  ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
  ChangeWindowMessageFilter($0049, MSGFLT_ADD);

就可以了。
----------------------------------------------
永远是DELPHI初学者。
作者:
男 hardnut (麦轲数据管家) ★☆☆☆☆ -
普通会员
2023/9/17 9:28:56
7楼: mark
----------------------------------------------
UniKeeper V10.40 -- 您最贴心的个人数据管理助手
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行93.75毫秒 RSS