您好,关于DrogDrop的问题。

wubo830814 2008-11-18 12:37:49
如何才能将我的电脑,回收站,IE等虚路径拖入自己的程序中,而且能识别他们,
...全文
149 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
无条件为你 2008-11-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 wubo830814 的回复:]
那是两种机制,一种是主动,一种是被动,大哥你不要搞错,
我是菜鸟,很多东西都不懂,你如果也不懂就不要来瞎指挥。
[/Quote]

你的问题是如何识别它们,至于主动或被动不是关键吧?我对这个控件比较熟悉,如果你不用这种方法,觉得别人的回答是在瞎指挥你,那你的问题如果能用其它办法解决并且代码少于我的代码,我可以再送他100分来求这个答案。
无条件为你 2008-11-19
  • 打赏
  • 举报
回复
用Samples面板上的ShellListView控件,于是,你的问题解决了。

不知道可以给我多少分。最近很忙。下次上CSDN不知道要等到啥时候。
wubo830814 2008-11-19
  • 打赏
  • 举报
回复
自己顶一下,还是没有具体的解决办法。。。
望高手相助。。。恩谢
wubo830814 2008-11-19
  • 打赏
  • 举报
回复
现在的主要问题是,拖拽“我的电脑”进入Form,如何知道拖入的是“我的电脑”。
请各位明示。
wubo830814 2008-11-19
  • 打赏
  • 举报
回复
那是两种机制,一种是主动,一种是被动,大哥你不要搞错,
我是菜鸟,很多东西都不懂,你如果也不懂就不要来瞎指挥。
无条件为你 2008-11-19
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 wubo830814 的回复:]
TO mwy654321
在D7找到了,但是这实现不了将我的电脑拖入的功能呀。
你挺搞笑。
[/Quote]

之前你所你找不到,后来又说我搞笑,呵呵,看来是你不会用.
ShellListView控件本身对你可能没有用,但它里面的有些事件是对你有帮助的,完全可以解决你的问题.
因为你拖入的对象肯定在ShellListView里面包含着,比较一下就可以了.你要是还不明白那就没有办法了,我最近上班不是很方便,上也是在网吧,所以不是很方便帮你写这个。
wubo830814 2008-11-19
  • 打赏
  • 举报
回复
自己顶一下,顺便再问一下,如何获得拖入文件获文件夹的GUID,
wubo830814 2008-11-19
  • 打赏
  • 举报
回复
TO mwy654321
在D7找到了,但是这实现不了将我的电脑拖入的功能呀。
你挺搞笑。
wubo830814 2008-11-19
  • 打赏
  • 举报
回复
我的是2007,Samples面板上没有ShellListView控件啊,
gyk120 2008-11-18
  • 打赏
  • 举报
回复
unit Unit1;

interface

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

type
TForm1 = class(TForm)

procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure DropFiles(var Message:TMessage);message WM_DropFiles;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.DropFiles(var Message:TMessage);
var
bufsize,num:Cardinal;
FilePath:array of Char;
begin
num:=DragQueryFile(Message.wParam,$FFFFFFFF,nil,0); //取得文件个数
for num:=0 to num-1 do begin
bufsize:=DragQueryFile(Message.wParam,num,nil,0);
setlength(FilePath,bufsize+1);
DragQueryFile(Message.wParam,num,pchar(FilePath),bufsize+1);
showmessage(pchar(FilePath));
end;
dragfinish(Message.wParam);
end;

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

end.
无条件为你 2008-11-18
  • 打赏
  • 举报
回复
你要的功能非常简单,DELPHI有自带的控件,拖一个放上去就可以了,代码一句也不用写。
fangsp 2008-11-18
  • 打赏
  • 举报
回复
http://delphi.sharpplus.com/Delphi_Old/shdrag.htm
参考一下
suton 2008-11-18
  • 打赏
  • 举报
回复
最好用别的吧,image,没有Handle,不太好做.

用panel或别的东西,可以override其paint方法的就行.到时候自己往上画图片就好了

你的需求,需要用到ActiveX单元的 IDropTarget 接口.所以最好是从TPanel或其它类,派生出来.

TMyPanel = class(TPanel, IDropTarget)

......
end;

在这个panel控件拥有句柄后,用RegisterDragDrop()将其注册成为接受DragDrop的目标.

你搜一下有关IDropTarget, RegisterDragDrop等资料,应该能找到相关的参考代码
wubo830814 2008-11-18
  • 打赏
  • 举报
回复
我现在想做的是,我把我的电脑拖入我的Form中,Form中的image可以根据我拖入的东西加载它的图标,并且记录它的路径,也就是点击image的时候,就执行我的电脑
fangsp 2008-11-18
  • 打赏
  • 举报
回复
你想要的功能能描述具体一点吗???

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧