利用ActiveX组件控制其所在的IE窗口
来源:互联网 发布:怎么算是有编程天赋 编辑:程序博客网 时间:2024/05/16 02:16
在实际的项目开发过程中,有时我们需要利用ActiveX组件控制其所在的IE窗口,如隐藏工具条和状态栏、全屏等,以使程序的工作区域最大。
1. 用Delphi建立一个ActiveXForm工程,添加对SHDocVw单元的引用;
2. 在Interface段声明一个自定义的消息常量,如下所示:
const
WM_UPDATE = WM_USER + 1;
3. 在类的私有段定义如下变量和函数:
private
FWebBrowser: IWebBrowser2;
procedure WMUpdate(var Msg: Integer); message WM_UPDATE;
function FindIEWebBrowser: IWebBrowser2;
function FindIEWindow(ParentHandle, ChildHandle: HWND): Boolean;
4. 按Ctrl+Shift+C自动生成函数体的代码,完善代码内容如下:
procedure TActiveFormX.WMUpdate(var Msg: Integer);
begin
FWebBrowser := FindIEWebBrowser;
if FWebBrowser <> nil then
begin
FWebBrowser.ToolBar := 0;
FWebBrowser.StatusBar := false;
end;
end;
function TActiveFormX.FindIEWebBrowser: IWebBrowser2;
var
tmpShell: IShellWindows;
tmpIntf: IDispatch;
tmpIE: IWebBrowser2;
i: Integer;
begin
try
tmpSHell := CoShellWindows.Create;
for i := 0 to tmpShell.Count - 1 do
begin
tmpIntf := tmpShell.Item(i);
if tmpIntf = nil then continue;
tmpIntf.QueryInterface(IID_IWebBrowser2, tmpIE);
if tmpIE = nil then Continue;
if (Integer(Handle) = tmpIE.HWND) or FindIEWindow(Integer(tmpIE.HWND), Handle) then
begin
Result := tmpIE;
Exit;
end;
end;
except
end;
end;
function TActiveFormX.FindIEWindow(ParentHandle,
ChildHandle: HWND): Boolean;
var
tmpHandle : HWND;
begin
tmpHandle := GetParent(ChildHandle);
if tmpHandle = 0 then
begin
Result := False;
Exit;
end else
begin
if tmpHandle = ParentHandle then
begin
Result := True;
Exit;
end else
begin
Result := FindIEWindow(ParentHandle, tmpHandle);
end;
end;
end;
5. 双击主窗体,在ActiveFormCreate事件中添下如下代码:
procedure TActiveFormX.ActiveFormCreate(Sender: TObject);
begin
PostMessage(Handle, WM_UPDATE, 0, 0);
end;
6. 在窗体上添加两个Button,分别命名为btnFullScreen和btnUnFullScreen,为其OnClick事件添加如下代码:
procedure TActiveFormX.btnFullScreenClick(Sender: TObject);
begin
if FWebBrowser <> nil then
begin
FWebBrowser.FullScreen := true;
end;
end;
procedure TActiveFormX.btnUnFullScreenClick(Sender: TObject);
begin
if FWebBrowser <> nil then
begin
FWebBrowser.FullScreen := false;
end;
end;
7. Build工程将其发布,运行生成的Html页面,组件加载成功后IE窗口的工具栏和状态条被隐藏了,通过窗体上的两个按钮可以控制IE窗口的全屏状态。
- 利用ActiveX组件控制其所在的IE窗口
- 弹出新的IE窗口,并控制其样式
- ACTIVEX OCX 获取 IE窗口的句柄
- 利用iExpress.exe制作IE ActiveX控制安装包(*.cab)
- javascript控制ie窗口
- JS 控制IE窗口
- JS 控制IE窗口
- ie的activex两难
- 设置iframe的高度和控制其所在层的边框动态显示
- 利用滑动窗口实现流量的控制
- 获得ActiveX控件所在网页的信息
- 获得ActiveX控件所在网页的信息 .
- ActiveX插件在关闭IE窗口时使得IE崩溃
- 利用wmctrl控制窗口
- 用Delphi编程控制IE浏览器的窗口
- 浅析IE弹出窗口之session的控制
- 使用Js脚本 修改控制IE的注册表相关设置(activex等)
- 使用Js脚本 修改控制IE的注册表相关设置(activex等)
- 最近一段时间
- 在 Exchange中如何启用 SMTP 协议日志
- CSS单元的位置和层次-div标签
- 2007-10-6
- EJB3.0 实体bean 简析
- 利用ActiveX组件控制其所在的IE窗口
- 用Delphi开发视频聊天软件
- Excel 2007的功能区定制和开发
- first--I love you, my sweetheart.
- 交换机、集线器、路由器区别和使用浅谈
- 为企业找到最合适的人才——从微软招聘看新时代的招聘
- memcpy memmove strcat strcopy strlen实现
- 又见标题党——怒评《JavaScript核心技术》
- 三十岁以前不必在乎的29件事