如何实现将程序中的一段文字拖放到资源管理器中,自动生成一个文件。(200分)

  • 主题发起人 主题发起人 DreamTiger
  • 开始时间 开始时间
D

DreamTiger

Unregistered / Unconfirmed
GUEST, unregistred user!
目标:
将Memo中的文字直接从自己的程序中拖放到资源管理器中,
自动创建一个文件来保存这些文字。
 
gz,我正在解决将 Memo 中的文字存入 Oracle 库中的一个字段,曾设想过使用 Stream 先
将内容存为一个文本文件( stream.savetofile(filename) ),然后将文件 存入blob字段

 
这是程序中保存文件啊,跟我想要的不一样.我是想要从程序中拖动
一段文字到资源管理器,自动在该目录下创建文件,保存内容.问题
就是,资源管理器怎么接受这个拖动信息,创建相应文件.我大概知
道需要通过shell extension来弄,但是不知道怎么做。
 
唉,这个问题又要放空了。加到500分了!!!!
 
天方夜譚
 
怎么拖文字?不是不拖memo中选择的部分文字?
如果是的话,应该是完全可以的。既然能将资源管理器中的东西拖出来,为什么不可以拖进去?
做个OleAuto吧。
 
就是看到有软件实现了,才问的阿。有人实现了么?
 
为什么要拖啊 单击鼠标右键生成个文本文件不是一样的吗?
为什么一定要弄的那么花俏????这种功能有什么用吗?
 
想法不错,关注。
 
从资源管理器拖出来倒好办,就好像超级结巴,
这个消息就搞定。
procedure dropfiles(var message:Tmessage);message wm_dropfiles;
反过来没听说过。
 
可以,只是我目前懒得去想,但肯定是可以得。
 
从资源管理器拖东西到程序,或者从ie拖到程序,
都是有现成答案的,问题就是从程序拖到资源管
理器阿。
 
刚才看了一下,想到word确实可以做到,还有flash5似乎也可以(后者只是记得,没有验证)
不过Word生成的文件是:“文档 片段 '...'”之类的东西,但是同样可以使用Word打开。
个人认为他应该没有在资源管理器上做手脚,而是何剪贴板的格式有关的。只能是猜测。
不知道DreamTiger你看到的是否也是这种碎片?如果可以产生正确地文件和扩展名,那么好像就应该和shell extension有关吧。
 
yzhshi:
我看到的是另一个程序,好像叫做MagicNote,一种便签软件,可以直接
拖动便签中的文本到资源管理器中成为一个文件。所以很想知道怎么做
到的。
 
这是windows shell的编程,要用到一些接口,在Mastering Delphi6的842页有个例子叫The “To-Do File”Application,
看懂它之后,应该就没什么问题了。
 
memo中的文字要拖放都好象不太可能吧,其实很简单,自己设计一个右键功能就可实现。
因为你保存的是文本文件嘛。
 
用dragdrop套件吧,可以完成你要的功能。
 
用winapi hook 函数取得当前资源管理器的左边窗口的select item,即目录名,然后在这目
录下创建一个空文件,可以用dragdrop套件取得memo中的数据,再写这个文件。
 
这个操作与shell的关系相当密切,我一时说不清,建议大家到 MSDN 上找资料。

1.拖动源:
要允许 TMemo 中的文字被拖动出来,要重新写一下 TMemo ,如:
TMyMemo = class(TCustomMemo, IDropSource)
...
end;
并用 RegisterClipboardFormat 注册你拖动出来的数据类型,简单的可以注册成
“文本碎片”,资源管理器就可以接受,并存成文件(像从写字板中拖出的效果)

2.接受者:
你要想让资源管理器接受到的东西存成 .txt。就更麻烦了。
TMyTextDropTarget = class(TInterfacedObject, ... ,IContextMenu, IDropTarget, IDataObject)
...
end;
创建 COM Object 生成 .Dll 并注册给 Shell Folder .
IContextMenu 实现右键拖拽的Shell菜单扩展
IDropTarget 实现拖拽是否被接受
IDataObject 接收拖拽的数据

我最近也在找一些 Shell 编程的资料,尽是些 VC 的例子,Delphi的实在太少了。
等攒多了,再与大家分享吧.
 

Similar threads

D
回复
0
查看
758
DelphiTeacher的专栏
D
D
回复
0
查看
767
DelphiTeacher的专栏
D
D
回复
0
查看
782
DelphiTeacher的专栏
D
后退
顶部