关于IE编程的问题,急。给建议的都给分,不够再加!(200分)

  • 主题发起人 主题发起人 浪刀
  • 开始时间 开始时间

浪刀

Unregistered / Unconfirmed
GUEST, unregistred user!
我最近编一小程序,给一个记者朋友用的,功能主要是
记者在Internet中浏览时,抓取资料后存到数据库中,
提供检索打印功能等等。
本打算用hook,这样按下键盘的某个键,将当前选定的文本捕捉,然后得
到当前IE的Title,Url等信息存入数据库,但Hook太麻烦,就采用了监视
剪贴板的方法,当用户在IE中“复制“后,跳出对话框让用户选择要加入
的类别。
此时问题出现了,我如何知道用户在哪个IE窗口中复制了(用户不可能
只开一个IE窗口对不对?),问题如何解决,请赐教!
 
这个问题好办。
解决办法是利用ie的扩展,具体办法是这样的,简单地说就是看看netants的download by netants的做法。不会没用过netants吧?
思路是:
1、HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt
中增加一项。你应该可以在那里发现netants的踪迹。参考一下了。
2、用vbscript写一小段调用的程序,将ie中的内容传递。参考一下netants的吧。
3、用delphi写一个activex服务器,将vbscript传递的内容进行处理。
如果给的分足够高,我可以帮你完成。
 
取当前激活的窗口啊!
 
现在的煎贴板(可以开烧烤店了。。)工具不是很多吗??比如ClipCache..
我觉得就很不错。还有小峰出的那个电子书库支持拖拉。。就是选中一些
块后,可以拖拉到类似于NetAnts的拖放栏里面,这样就自动保存下来了。
小峰的主页:http://zjfeng.yeah.net
他做的那个东东开放源代码耶!!!!!用DELPHI的。。不错喔。。。
 
http://www.intelligo.net/iedelphi/
 
给你我老人家以前写的热键捕获当前有IE的URL和TITLE的方法。虽然不
是什么标准的方法,但却是绝对好用。
//writer by liguang
//in 2000-03-17
unit ligwin1;

interface

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

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
control,KeyId:integer;
hotkeyid:ATOM;
public
{ Public declarations }
procedure WMHOTKEY(var Msg:TMessage);message WM_HOTKEY;
end;

var
Form1: TForm1;
ThisUrl:PChar;

implementation

{$R *.DFM}


function EnumChildWindowsProc(H:HWnd;lparam:longint):Boolean;stdcall;
var
Buffer: array[0..10] of Char;
begin
Result:=True;
GetClassName(h,buffer,10);
if trim(StrPas(Buffer))='Edit' then
begin
SendMessage(h,WM_GETTEXT,249,Integer(ThisUrl));
Result:=False;
end;
end;

procedure TForm1.WMHOTKEY(var Msg:TMessage);
var
h:HWND;
buffer:array[0..256] of char;
temp:String;
begin
if (Msg.LParamHi=KeyId) and (Msg.LParamLo=control) then
begin
Msg.Result:=1;
h:=GetForegroundWindow;
GetClassName(h,buffer,255);
if StrPas(buffer)='IEFrame' then
begin
EnumChildWindows(h,@EnumChildWindowsProc,0);
GetWindowText(h,buffer,255);
buffer[Pos(' - ',buffer)]:=Char(0);
temp:='当前网页的URL是:'+ThisUrl+#13#10+'当前网页Title是:'+buffer;
MessageBox(h,PChar(temp),'提示信息',MB_OK)
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ThisUrl:=StrAlloc(250);
control:=MOD_CONTROL or MOD_SHIFT ;KeyId:=$43;
hotkeyid:=GlobalAddAtom('UserDefineHotKey')-$C000;
RegisterHotKey(Handle,hotkeyid,control,KeyId);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnregisterHotKey(Handle,hotkeyid);
DeleteAtom(hotkeyid);
end;

end.
另外如果想实现网络蚂蚁的那样鼠标右键然后“DOWNLOAD BY NETANTS”
的功能,就只能用VBS或JS+OLE自动控制了,想知道怎样做么,想知道我
就告诉你。
 
为什么要知道是哪个窗口呢?
OopsWare说得对嘛,选定之后,你找活动窗口就没错了。
 
为什么不用dde?
我这里有一个用dde获得ie浏览的url和title的程序,是以前这里的一个高手给我的
用那个就可以直接获得当前浏览器的url和title
 
To OopsWare and 黄豆:
活动窗口行不通,可参考以前的提问。
To daiqingbo:
分数没问题,我可以再加。
To liguang 李广???
--》》想实现网络蚂蚁的那样鼠标右键然后“DOWNLOAD BY NETANTS”
的功能,如何实现,请赐教,我给分!
 
我也想知道这个做法,来听听
 
to garden_wood
对不起,刚才没看见,DDE获得TITLE和URL?请赐教!
 
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=190344
 
cAkk,错了,是这个地址:
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=183116
//hehe
 
to 浪刀:
关于想实现网络蚂蚁的那样鼠标右键然后“DOWNLOAD BY NETANTS”??
哎,试试以下的注册表,你把下面的东东存为test.reg后,双击它就行了。
这样你就可以在IE的右键菜单中找到“我的主页”链接了。。哈。。
REGEDIT4

[HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/MenuExt/访问重型炸弹!主页]
@="http://heavybomb.yeah.net"

 
to 淡淡的笑:
你把这个问题想象得太简单了吧,我所说是的鼠标右键加入菜单项
,并在其功能中实现取当前浏览正在浏览的网页的URL和TITLE。这就需
要OLE自动控制+VS或者JS来实现了,试想一下,谁会把访问自己主页这
样的单一功能加入到IE鼠标右键上呢?
至于具体的实现方法,我昨天实在是太忙,今天或者明天我会将其
总结一下,写成一篇文章然后上传上去供大家下载。
 
to liguang
不错,不过还是简单的说。用vb/vc写个asp组件(delphi我不会写asp组件)
提供一个可调用接口函数,这个函数启动DDE程序,获得url和title
然后用vb调用这个asp就可以(//hehe 我对js有些反感!)
 
to garden_wood:
DDE好像不能控制一个不是由DDE所创建的应用程序对象。DDE取IE或者NETSACPE
浏览器URL和TITLE的例子我手头就有现成的(HUBDOG大侠发给我的),谁要我妹给
他。
 
To Liguang
lxgcn@elong.com
 
将IE Ole到你的程序(Delphi的TWebBrowser),窗口同时放一打印机图标(TImage)
TImage.OnDragOver时。将此Url中的东西取出保存并打印。既显示自己程序功能
强大,又不用去虎什么蚂蚁!
我正在做类似程序,可与我联系 <A STYLE="color:#FF0000;text-decoration:none;" HREF="mailto:oops@jn-public.sd.cninfo.net"><font size="3" face="Wingdings">*</font></A>
 
to 浪刀:
昨天晚上信已经发出,请注意查收。
to OopsWare:
经验告诉我,最好不要做这种费力不讨好的事情。如果你有实现IE的所有功能的话,
那么就去做,否则的话,还是不要这么做了。另外内嵌IE也应该是导入
SHDOCVW.DLL,DELPHI自带的那个东西并不好。
 
后退
顶部