这里有一个从德国下载的资料。不过我自己也没有试过,不知道有没有帮助。...den Internet Explorer mit OLE steuern ? uses comobj; procedure OpenIE(aURL: string); var IE : Variant; WinHanlde : HWnd; begin if( VarIsEmpty(IE) )then begin IE := CreateOleObject('InternetExplorer.Application'); IE.Visible := true; IE.Navigate(aURL); end else begin WinHanlde := FindWIndow('IEFrame', nil); if (0 <> WinHanlde) then begin IE.Navigate(aURL); SetForegroundWindow(WinHanlde); end else ShowMessage('Can''t open IE !'); end; end; procedure TForm1.Button1Click(Sender: TObject); begin OpenIE('http://www.swissdelphicenter.ch'); end;
呵呵,这个问题终于用其它更爽的办法解决了,就是直接操纵里面的dom元素。anyway,thank for cybercake。maybe i no more a delpho programmer.oicq: 1766598 mail: [email protected]
if WebBrowser1.Document<>nil then with WebBrowser1.Application as IOleObject do Doverb(OleIVERB_UIACTIVATE,nil,nil,0,handle,GetClientRect);
如果实在不行,先这样交货再说:
既然用鼠标可以setfocus那你就用程序把鼠标移过去,点一下:)
SelectNext(Sender as TWinControl,True,True);
感谢各路高手帮忙找答案。
需重载。delphi引入webbrowser时未将其基类
引入,setfocus未被重载。
可能要对引入所用pas修改
我试过没用:)
其实WebBrowse只是一个容器,跟Form一样,真正拥有输入焦点的是WebBrowse中的条目,如Link、Edit等。
delphi编的控件在vb、vc中也不能使用完全。
delphi自带的activex page中chartfx也不能setfocus。
webbrowser控件第一层是activex容器,第二层activex窗体,最里层应该是view的窗口,而browser中的超链、图片等用findwindowex根本找不到句柄,无法设置焦点。
象vb中对该控件的setfocus会加点东西(虽然不知是什么,但肯定有不同),delphi只是按照activex控件微软定义的接口来调用,自然会少点东西。
从activex的定义上讲,这种东西应该是微软的bug,但如果从vb、vc的角度来看,微软弥补了这种东西。
不管是谁的问题,倒霉的是我们这些所谓的第三方开发人员,没有内核资料,有时还要应付不同厂家产品的兼容问题。
实际上这个程序用到了ihtmldocument2的接口
象你那样想简单的通过twebbrowser本身提供的method是不可能的
如果你想要的话,请帮我当几个文件,我连不上去。
如何,愿意的话发mail给我[email protected]
var
IE : Variant;
WinHanlde : HWnd;
begin
if( VarIsEmpty(IE) )then
begin
IE := CreateOleObject('InternetExplorer.Application');
IE.Visible := true;
IE.Navigate(aURL);
end
else
begin
WinHanlde := FindWIndow('IEFrame', nil);
if (0 <> WinHanlde) then
begin
IE.Navigate(aURL);
SetForegroundWindow(WinHanlde);
end
else
ShowMessage('Can''t open IE !');
end;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
OpenIE('http://www.swissdelphicenter.ch');
end;
mail: [email protected]
with WebBrowser1.Application as IOleObject do
Doverb(OleIVERB_UIACTIVATE,nil,nil,0,handle,GetClientRect);
还有你在遍历窗口查询子窗口时能否解决以下问题?
我在编写一个窗口管理程序,其中当且仅当只有一个已知项即知道父窗口的句柄时(该窗口可能也是别的应用程序产生的,不一定知道它都有些什么样的窗口类型的子窗口控件),需要遍历该窗口中所拥有的全部子窗口,包括具有窗口句柄的控件型的子窗口。 当我用EnumWindows/EnumWindowProc函数或者通过循环用GetWindow/GetChildWindow实现程序时,发现两者实现的结果是相同的(不奇怪)
但奇怪的是,如果在某具有父级关系的窗口中当放入了PageControl页控件时,如果这个控件的多页中某页在自定义函数执行前,尚没有一次被点击显示在最上页时,用以上方法是无法得到该PageControl页控件中子页的窗口句柄的。只有你将所有的子页都点激活一遍以后,再执行我的自定义函数才能通过以上函数找到它。
请问:我如何才能编程实现不需人工激活就可以通过遍历得到如PageControl页的所有子页的控件句柄的?
请问:我如何遍历得到窗口中所有存在的图形的句柄?图形按钮的句柄?菜单项的句柄?
请问:有何种方法可以统一地得到某一窗口中有句柄类型的所有控件的句柄(包括子型窗口、图形、菜单。所有的。?
我的确是用EnumWindows函数和设定给它的回调函数EnumWindowProc,通过循环对进穷举枚举,但的确诸如PageControl或TabControl之类的多页的控件的所有子页中如果没有曾经被激活显示过一次以前,EnumWindows函数是无法找到这类控件的子型控件的窗口的句柄的,系统好象认为不存在其它未被激活的页的。 多谢!
不信可以试试