一个拖放文件的问题(50分)

  • 主题发起人 主题发起人 tiany
  • 开始时间 开始时间
T

tiany

Unregistered / Unconfirmed
GUEST, unregistred user!
想用拖放的方式实现我的程序和其它程序(比如桌面、资源管理器之间的文件交换),功能类似于RAR
现已实现从其它程序拖放文件至我的程序的功能,使用以下API
DragAcceptFiles
DragQueryFile
DragQueryPoint
DragFinish
但不知如何实现从我的程序拖放文件至其它程序的功能,我想是需要通过向其它程序发WM_DROPFILES消息实现,
但问题是如何判断mouse所指的程序是可接收文件的,还有什么时候准备好我要发的文件,什么时候发消息。
请大虾们指点,最好有代码示例,谢谢!
 
请大家帮忙呀,分少可以加!
 
要看其它程序是否接受,受其它程序的限制!
 
如何判断对方程序是否可以接受呢,还是有很多细节问题的,请大家指教!
 
uses shellapi;
public
procedure wmdropfiles(var message: tmessage); message wm_dropfiles;

procedure tform1.wmdropfiles(var message: tmessage);
var
p: array[0..254] of char;
i: word;
begin
inherited;
{$IFDEF WIN32}
I := dragqueryfile(message.wparam, $FFFFFFFF, nil, 0);
{$ELSE}
I := dragqueryfile(message.wparam, $FFFF, nil, 0);
{$ENDIF}
for i := 0 to i - 1 do
begin
dragqueryfile(message.wparam, i, p, 255);
if extractfileext(strpas(p)) = '.ucf' then
loadfile(strpas(p)) else
messagebox(handle, '此文件不是UCF文件格式', 'error', 0);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
dragacceptfiles(form1.handle, true);
end;
 
to kimlon:
你这是接受文件的代码,问题是如何把文件拖放到其它程序中,比如把文件拖放到桌面?
 
IDropSource,IDataObject去msdn看看,要实现起来比较的麻烦。但要用到这两个interface
 
http://delphibbs.com/delphibbs/dispq.asp?lid=2471437
 
后退
顶部