实现从硬盘中拖放文件就很容易,但要实现从IE中拖放URL(即OLE拖放),我想了很久,也问了X次,任无法解决。无耐之下只得使用第三方控件,岂料我找来找去都没找到一个可以使用的控件。
本来国内的"XURLDropTarget"勉强可以使用,岂料这东东也不知是怎么编写的,竟然与ShellCtrls发生冲突(如果在uses中加入ShellCtrls,则XURLDropTarget立即失效)。国外的找来找去都是要$的,没有哪个可以使用的免费控件。my gad,国内的很多软件都支持从IE中拖放URL地址了,我本想这项“技术”已是很普及了,岂料弄了X天还是没能解决、而且好像是解决不了了!!!my gad,我真的就这样子放弃了吗?.....还有谁能help me啊........别见死不救啊.,.....
本来国内的"XURLDropTarget"勉强可以使用,岂料这东东也不知是怎么编写的,竟然与ShellCtrls发生冲突(如果在uses中加入ShellCtrls,则XURLDropTarget立即失效)。国外的找来找去都是要$的,没有哪个可以使用的免费控件。my gad,国内的很多软件都支持从IE中拖放URL地址了,我本想这项“技术”已是很普及了,岂料弄了X天还是没能解决、而且好像是解决不了了!!!my gad,我真的就这样子放弃了吗?.....还有谁能help me啊........别见死不救啊.,.....
下载:http://www.torry.net/vcl/system/draganddrop/dragdrop.exe
安装后在DetailedDemo目录里有个例子,我试过可以从IE拖放URL。
For more information about DropMaster or other Raize Software products,
point your web browser to the Raize Software web site at: http://www.raize.com
站点的那个是Update来的,
我有源代码,但太大Email发不了,我没有空间,我的主页有问题,没法了
等以后我有Free的空间就能帮到不少人了
var
Form1: TForm1;implementation{$R *.DFM}
Function GetURL(H:hwnd;lparam:longint):boolean;stdcall;
var str,url:array [0..254] of char;
begin
getclassname(h,@str,255);
if strpas(@str)='ComboBoxEx32' then // ComboBoxEx32可以改成Edit.
begin
SendMessage(h,WM_GETTEXT,255,LongInt(@url));
SendMessage(h,WM_SETTEXT,255,longint(pchar('http://www.sohu.com')));
Sendmessage(h,WM_KEYDOWN,VK_Return,1);
form1.ListBox1.Items.Add(strpas(@url));
end;
result:=true;
end;
function callbackproc(H:HWnd;lparam:longint):Boolean;stdcall;
var str:array [1..255] of char;
begin
getclassname(h,@str,255);
if ((strpas(@str)='CabinetWClass') or (strpas(@str)='IEFrame')) then
begin
Enumchildwindows(h,@GetURL,0);
end;
result:=true;
end;procedure TForm1.findbuttonClick(Sender: TObject);
begin
listbox1.Clear;
Enumwindows(@callbackproc,0);
end;end.