得到所有的IWebbrowser2,但怎么才知道哪个IWebbrowser2是当前正在打开的呢?(285分)

  • 主题发起人 主题发起人 aton2000
  • 开始时间 开始时间
A

aton2000

Unregistered / Unconfirmed
GUEST, unregistred user!
下面这一段可以得到所有的IWebbrowser2,
但我怎么才知道哪个IWebbrowser2是当前正在打开的呢?
举例,如果使用netcaptor软件,打开很多窗口,
可以得到每个窗口的IWebbrowser2,
但怎么才知道哪个是当前打开的IWebbrowser2呢???


uses
shdocvw_tlb;

procedure TForm1.Button1Click(Sender: TObject);
var
x: Integer;
Sw: IShellWindows;
begin
sw := CoShellWindows.Create;
for x := 0 to SW.Count - 1 do
Listbox1.Items.Add((Sw.Item(x) as IWebbrowser2).LocationUrl);
end;
 
你的问题实在是不明确,IShellWindows是所有的IE实例可不是TWebBrowser实例。
而你又说要像netcaptor一样?!这不矛盾么!

如果你是想写一个浏览器的话,最简单但较差的方法是FindComponent一类的方法。
如果你是想找到所有IE实例那我不明白什么叫“当前正在打开的”呢?

对于同时只有一个可见WebBrowser可以用IsWindowVisible来判断,可见的话就是当前窗口。
用法如下:
IsWindowVisible(WebBrowser1.Handle)

对于Mdi的程序可以用
WebBrowser1.GetParentComponent
找到他的MdiChild Form,判断一下是不是Active的就知道是不是当前的了。
 
看在我玩虚幻锦标赛翻版的份上(最后一关是与一个机器人在飞船上单挑,没错吧)
,大虾帮我把这个问题弄明白。
我不是想做“浏览器”,我做了一个“网站注册器”,
(http://go8.163.com/~aton/atonreg.htm)
我的意思是,装了这个软件后。既打开了ie,
也打开了一个netcaptor,在netcaptor中打开了多个页面。
这时如果在某个页面单击鼠标右键,在菜单中选择“填充当前网页”,
用我现在的方法会把最近的ie里的表单给填充了,
而不是填充netscaptor中当前页面的。
应该怎么做才行???
你用oicq吗?号码是多少?



 
接受答案了.
 
后退
顶部