大发国际娱乐手机官网苹果手机可以吗?ISO 8.1 行不行

CActiveXUI* pActiveXUI1 = static_cast&CActiveXUI*&(m_pm.FindControl(_T(&ie&)));
if( pActiveXUI1 ) {
IWebBrowser2* pWebBrowser1 = NULL;
pActiveXUI1-&GetControl(IID_IWebBrowser2, (void**)&pWebBrowser1);
if( pWebBrowser1 != NULL ) {
pWebBrowser1-&Navigate(L&test.htm&,NULL,NULL,NULL,NULL);
//pWebBrowser-&Navigate(L&about:blank&,NULL,NULL,NULL,NULL);
pWebBrowser1-&Release();
test.htm中HTML code
&input id=&button& type=&button& value=&点击调用客户端的CppCall函数& onclick=&return window.external.CppCall()& /&
网上的代码都看的差不多了,也不是很懂。问题:怎么实现htm中调用CppCall函数?------解决方案--------------------只知道调用组件函数,没了解过调用C++函数
------解决方案--------------------html文件:&HTML&&HEAD&&TITLE&New Page&/TITLE&&script language=&javascript&&
function doTest()
FuckATL1. CppCall();
}&/script&&/HEAD&&BODY&&OBJECT ID=&FuckATL1& CLASSID=&CLSID:19CE2D6B-DE5E-B-D&&&/OBJECT&&input type=&button& value=&测试加法& id=&btnOK& onclick=&doTest();&&&/input&&/BODY&&/HTML&
------解决方案--------------------参考mfc的做法。mfc向导支持生成html界面的对话框。里面有点html上的按钮,然后调用C++的函数的功能。
------解决方案--------------------可以自己在设置元素的OnClick事件。C/C++ code
HRESULT IHTMLElement::get_onclick(VARIANT *p);
HRESULT IHTMLElement::put_onclick(VARIANT v);
------解决方案--------------------应该通过HTML页面来传递JS,子页面JS传递到主HTML页面JS,然后再有主页面调用C++
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有【备忘录】修改window.external使JS可调用Delphi方法1
原文地址:
在JS中,有一个比较特殊的对象,即window.external,用它可以调用浏览器提供的外部方法
一个很简单的例子就是将当前页添加到收藏夹
window.external.addFavorite("","桃红柳绿的新浪博客');
这样写脚本就可以了。
那么如果我想自己定义external,以便在自己的软件内使用IE核心的浏览器作为UI容器,该如何做呢?
本文即是解决此问题。
一、制作TLB
在File | New | Other 菜单下,选择新建一个Type Library,这个向导在ActiveX页内。
然后按下图所示,新建一个接口,在接口下新建一个DoSearchData方法,这个方法即是将来需要添加到external中的。
完成添加后,点击保存为TLB按钮,将生成一个TLB文件,此处我将它命名为GetData.tlb
二、实现IDocHostUIHandler接口
这部分相对比较简单,从MSDN上找到相关的C++代码,把它转换成Delphi的即可。代码如下:
DocHostUIH
&interface
&Windows, ActiveX;
&DOCHOSTUIFLAG_DIALOG&&&&&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_DISABLE_HELP_MENU&&&&&&&&&&
&DOCHOSTUIFLAG_NO3DBORDER&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_SCROLL_NO&&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE&&&&
&DOCHOSTUIFLAG_OPENNEWWIN&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_DISABLE_OFFSCREEN&&&&&&&&&&
&DOCHOSTUIFLAG_FLAT_SCROLLBAR&&&&&&&&&&&&&
&DOCHOSTUIFLAG_DIV_BLOCKDEFAULT&&&&&&&&&&&
&DOCHOSTUIFLAG_ACTIVATE_CLIENTHIT_ONLY&&&&
&DOCHOSTUIFLAG_OVERRIDEBEHAVIORFACTORY&&&&
&DOCHOSTUIFLAG_CODEPAGELINKEDFONTS&&&&&&&&
&DOCHOSTUIFLAG_URL_ENCODING_DISABLE_UTF8&&
&DOCHOSTUIFLAG_URL_ENCODING_ENABLE_UTF8&&&
&DOCHOSTUIFLAG_ENABLE_FORMS_AUTOCOMPLETE&&
&DOCHOSTUIFLAG_ENABLE_INPLACE_NAVIGATION&&
&DOCHOSTUIFLAG_IME_ENABLE_RECONVERSION&&&&
&DOCHOSTUIFLAG_THEME&&&&&&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_NOTHEME&&&&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_NOPICS&&&&&&&&&&&&&&&&&&&&&
&DOCHOSTUIFLAG_NO3DOUTERBORDER&&&&&&&&&&&&
&DOCHOSTUIFLAG_DISABLE_EDIT_NS_FIXUP&&&&&&
&DOCHOSTUIFLAG_LOCAL_MACHINE_ACCESS_CHECK =
&DOCHOSTUIFLAG_DISABLE_UNTRUSTEDPROTOCOL&&
&DOCHOSTUIDBLCLK_DEFAULT&&&&&&&&
&DOCHOSTUIDBLCLK_SHOWPROPERTIES = 1;
&DOCHOSTUIDBLCLK_SHOWCODE&&&&&&&
&DOCHOSTUITYPE_BROWSE = 0;
&DOCHOSTUITYPE_AUTHOR = 1;
&TDocHostUIInfo = record
cbSize: ULONG;
dwFlags: DWORD;
dwDoubleClick: DWORD;
pchHostCss: PWC
pchHostNS: PWC
&PDocHostUIInfo = ^TDocHostUII
&IDocHostUIHandler = interface(IUnknown)
['{bd3f23c0-d43e-11cf-893b-00aa00bdce1a}']
ShowContextMenu(const dwID:
ppt: PPOINT;
pcmdtReserved: IUnknown;
pdispReserved: IDispatch): HR
GetHostInfo(var pInfo:
TDocHostUIInfo): HR stdcall;
ShowUI(const dwID:
pActiveObject: IOleInPlaceActiveO
pCommandTarget: IOleCommandT const pFrame:
IOleInPlaceF
pDoc: IOleInPlaceUIWindow): HR stdcall;
function HideUI:
HR stdcall;
function UpdateUI:
HR stdcall;
EnableModeless(const fEnable:
HR stdcall;
OnDocWindowActivate(const fActivate:
HR stdcall;
OnFrameWindowActivate(const fActivate:
HR stdcall;
ResizeBorder(const prcBorder:
pUIWindow: IOleInPlaceUIW const fFrameWindow:
TranslateAccelerator(const lpMsg: PMSG;
pguidCmdGroup: PGUID;
nCmdID: DWORD): HR
GetOptionKeyPath(var pchKey:
POLESTR; const dw:
GetDropTarget(const pDropTarget:
out ppDropTarget: IDropTarget): HR stdcall;
GetExternal(out ppDispatch: IDispatch): HR stdcall;
TranslateUrl(const dwTranslate:
pchURLIn: POLESTR;
ppchURLOut: POLESTR): HR stdcall;
FilterDataObject(const pDO:
out ppDORet: IDataObject): HR stdcall;
&implementation
三、实现一个带有IE组件的容器
由于Delphi自带的WebBrowser控件不支持external的直接扩展,因此我们需要另外写一个容器,使它实现IDocHostUIHandler接口,并且通过ActiveX单元的IOleObject.SetClientSite方法,将我们自己的容器填充进去。
这部分的代码直接参考了EmbeddedWB组件的相关实现,具体代码如下:
Windows, ActiveX, SHDocVw, DocHostUIH
TNulWBContainer = class(TObject,
&&& IUnknown,
IOleClientSite, IDocHostUIHandler)
fHostedBrowser: TWebB
&&& procedure
SetBrowserOleClientSite(const Site: IOleClientSite);
&&& function
QueryInterface(const IID: TGUID; out Obj): HR
&&& function
_AddRef: I
&&& function
_Release: I
&&& function
SaveObject: HR
&&& function
GetMoniker(dwAssign: L
dwWhichMoniker: L
out mk: IMoniker): HR
&&& function
GetContainer(
out container: IOleContainer): HR
&&& function
ShowObject: HR
&&& function
OnShowWindow(fShow: BOOL): HR
&&& function
RequestNewObjectLayout: HR
&&& function
ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;
const pcmdtReserved: IU const pdispReserved: IDispatch):
&&& function
GetHostInfo(var pInfo: TDocHostUIInfo): HR
&&& function
ShowUI(const dwID: DWORD;
const pActiveObject: IOleInPlaceActiveO
const pCommandTarget: IOleCommandT const pFrame:
IOleInPlaceF
const pDoc: IOleInPlaceUIWindow): HR
&&& function
HideUI: HR
&&& function
UpdateUI: HR
&&& function
EnableModeless(const fEnable: BOOL): HR
&&& function
OnDocWindowActivate(const fActivate: BOOL): HR
&&& function
OnFrameWindowActivate(const fActivate: BOOL): HR
&&& function
ResizeBorder(const prcBorder: PRECT;
const pUIWindow: IOleInPlaceUIW const fFrameWindow: BOOL):
&&& function
TranslateAccelerator(const lpMsg: PMSG; const pguidCmdGroup:
const nCmdID: DWORD): HR
&&& function
GetOptionKeyPath(var pchKey: POLESTR; const dw: DWORD ):
&&& function
GetDropTarget(const pDropTarget: IDropT
out ppDropTarget: IDropTarget): HR
&&& function
GetExternal(out ppDispatch: IDispatch): HR
&&& function
TranslateUrl(const dwTranslate: DWORD; const pchURLIn:
var ppchURLOut: POLESTR): HR
&&& function
FilterDataObject(const pDO: IDataO
out ppDORet: IDataObject): HR
&&& constructor
Create(const HostedBrowser: TWebBrowser);
&&& destructor
&&& property
HostedBrowser: TWebBrowser read fHostedB
implementation
{ TNulWBContainer }
constructor TNulWBContainer.Create(const HostedBrowser:
TWebBrowser);
Assert(Assigned(HostedBrowser));
inherited C
fHostedBrowser := HostedB
SetBrowserOleClientSite(Self as IOleClientSite);
destructor TNulWBContainer.D
SetBrowserOleClientSite(nil);
function TNulWBContainer.EnableModeless(const fEnable: BOOL):
Result := S_OK;
function TNulWBContainer.FilterDataObject(const pDO:
out ppDORet: IDataObject): HR
ppDORet :=
Result := S_FALSE;
function TNulWBContainer.GetContainer(
out container: IOleContainer): HR
container :=
Result := E_NOINTERFACE;
function TNulWBContainer.GetDropTarget(const pDropTarget:
out ppDropTarget: IDropTarget): HR
ppDropTarget :=
Result := E_FAIL;
function TNulWBContainer.GetExternal(out ppDispatch: IDispatch):
ppDispatch :=
Result := E_FAIL;
function TNulWBContainer.GetHostInfo(var pInfo: TDocHostUIInfo):
Result := S_OK;
function TNulWBContainer.GetMoniker(dwAssign, dwWhichMoniker:
out mk: IMoniker): HR
Result := E_NOTIMPL;
function TNulWBContainer.GetOptionKeyPath(var pchKey:
const dw: DWORD): HR
Result := E_FAIL;
function TNulWBContainer.HideUI: HR
Result := S_OK;
function TNulWBContainer.OnDocWindowActivate(
const fActivate: BOOL): HR
Result := S_OK;
function TNulWBContainer.OnFrameWindowActivate(
const fActivate: BOOL): HR
Result := S_OK;
function TNulWBContainer.OnShowWindow(fShow: BOOL):
Result := S_OK;
function TNulWBContainer.QueryInterface(const IID: TGUID; out
if GetInterface(IID, Obj) then
&&& Result :=
&&& Result :=
E_NOINTERFACE;
function TNulWBContainer.RequestNewObjectLayout: HR
Result := E_NOTIMPL;
function TNulWBContainer.ResizeBorder(const prcBorder:
const pUIWindow: IOleInPlaceUIW const fFrameWindow: BOOL):
Result := S_FALSE;
function TNulWBContainer.SaveObject: HR
Result := S_OK;
procedure TNulWBContainer.SetBrowserOleClientSite(
const Site: IOleClientSite);
OleObj: IOleO
Assert((Site = Self as IOleClientSite) or (Site = nil));
if not Supports(fHostedBrowser.DefaultInterface, IOleObject,
OleObj) then
Exception.Create('Browser''s Default interface does not support
IOleObject');
OleObj.SetClientSite(Site);
function TNulWBContainer.ShowContextMenu(const dwID:
const ppt: PPOINT; const pcmdtReserved: II
const pdispReserved: IDispatch): HR
Result := S_FALSE
function TNulWBContainer.ShowObject: HR
Result := S_OK;
function TNulWBContainer.ShowUI(const dwID: DWORD;
const pActiveObject: IOleInPlaceActiveO
const pCommandTarget: IOleCommandT const pFrame:
IOleInPlaceF
const pDoc: IOleInPlaceUIWindow): HR
Result := S_OK;
function TNulWBContainer.TranslateAccelerator(const lpMsg:
const pguidCmdGroup: PGUID; const nCmdID: DWORD): HR
Result := S_FALSE;
function TNulWBContainer.TranslateUrl(const dwTranslate:
const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HR
Result := E_FAIL;
function TNulWBContainer.UpdateUI: HR
Result := S_OK;
function TNulWBContainer._AddRef: I
Result := -1;
function TNulWBContainer._Release: I
Result := -1;
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。window.external增添方法 - JavaScript当前位置:& &&&window.external增添方法window.external增添方法&&网友分享于:&&浏览:69次window.external添加方法external应该是一个封装好了的类吧,现在的项目里有段代码就是用window.external运行自己方法,比如有个form,在form里添加了一个WebBrowser的控件,其url为index.htm,在index.htm里有段js代码,是调用form里的方法,CallWin()是form里的方法,在index.htm里js代码是这样调用CallWin方法的:window.external.CallWin(),这个external是个封装的类吧,如果我要window.external.CallWin()这样用,那CallWin这个方法应该是封装在external里的吧?还是其他什么的?求高手解答
------解决方案--------------------
menuArguments&返回快捷菜单执行所在的窗口对象。&
AddChannel&显示一个对话框,允许用户输入指定的频道,或当已安装时更改频道的&URL。&
AddDesktopComponent&向&Microsoft&&活动桌面&&中添加&Web&站点或图像。&
AddFavorite&出现一个对话框提示用户将指定的&URL&添加到收藏夹内。&
AutoCompleteSaveForm&将指定表单保存到自动完成数据存储中。&
AutoScan&通过完成模板传递指定查询试图连接到&Web&服务器。&
ImportExportFavorites&处理导入和导出&Microsoft&&Internet&Explorer&&收藏夹。&
IsSubscribed&获取表明客户是否订阅了给定频道的值。&
NavigateAndFind&前往指定的&URL&并选中指定文本。&
ShowBrowserUI&打开指定的浏览器对话框。------解决方案--------------------引用:解决了,是要在form的构造函数中加一句语句:webB.ObjectForScripting&=&
WebB是WebBrowser控件的name
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有博客访问: 259880
博文数量: 65
博客积分: 2125
博客等级: 大尉
技术积分: 667
注册时间:
认证徽章:
空气中的尘埃
APP发帖 享双倍积分
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: WINDOWS
&&& 由于visual studio2005 中WebBrowser控件已经实现了IDocHostUIHandler,所以只要把应用程序属性类的 "com可见"选上.再给 this.webBrowser1.ObjectForScripting = 赋值就行了
代码如下:form1.cs
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication3{&&&&public partial class Form1 : Form&&&&{&&&&&&&&public Form1()&&&&&&&&{&&&&&&&&&&&&InitializeComponent();&&&&&&&&}&&&&&&&&private void button1_Click(object sender, EventArgs e)&&&&&&&&{&&&&&&&&&&&&this.webBrowser1.Navigate("F:\\WindowsApplication3\\3.html");&&&&&&&&&&&&this.webBrowser1.ObjectForScripting = this;&&&&&&&&}&&&&&&&&private void Form1_Load(object sender, EventArgs e)&&&&&&&&{&&&&&&&&&&&&&&&&&&&&}&&&&&&&&public string test(string jsstr) { &&&&&&&&&&&&return "inapplication hello , "+jsstr;&&&&&&&&}&&&&}}
<html><head>&<script language=javascript>function go(){alert(window.external.test(" call at 3.html js "));&}</script><head> <body><input type="button" onclick= "go();" value="test"> </body></html>
阅读(3906) | 评论(1) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
vb6可能做到吗?
请登录后评论。WebBrowser控件有BUG
  ShowWindow(WS_HIDE);之后控件就被销毁了。
  再也显示不出来了:(
  原因:
  在MFC中,WebBrowser控件动态创建,没有设置WS_VISIBLE 属性 或者 调用了ShowWindow(SW_HIDE);
  就会调用IOleControl::DoVerb() ,使WebBrowser控件的实例被销毁。
  解决办法:
  用SDK的ShowWindow函数。
  //隐藏IE控件
  ::ShowWindow( m_pWB.GetSafeHwnd(), SW_HIDE );
  //显示IE控件
  ::ShowWindow( m_pWB.GetSafeHwnd(), SW_SHOW );[喝小酒的网摘]/a/16801.htm原文:
IP:123.96.49.211:delphi webbrowser 如何隐藏IP:116.237.138.178:vb WebBrowser 跳转 去掉声音IP:220.189.223.6:cppwebbrowser 支持 JSIP:58.48.97.2:DELPHI webbrowser隐藏后无法使用IP:221.234.250.136:DELPHI WEBBROWSER隐藏了无法使用IP:222.241.126.136:动态建立TWebBrowser 不显示IP:183.12.8.130:CWebBrowser2 显示,隐藏IP:112.64.189.69:销毁 webbrowserIP:171.214.154.229:DUILIB 动态创建webbrowser控件IP:202.103.20.226:delphi webbrowser 动态IP:210.21.244.108:vb webbrowser 隐藏IPIP:125.31.25.76:cppwebbrowser 动态IP:220.173.114.28:c++ 动态建立webbrowserIP:221.133.245.25:mfc中webbrowser获取跳转后页面的地址IP:113.31.45.201:delphi webbrowser 动态创建 销毁IP:211.137.228.130:CppWebBrowser 打开一个文件IP:115.216.0.52:webbrowser 隐藏ip地址IP:59.49.206.190:delphi 动态创建 WebbrowserIP:61.130.151.206:销毁WebBrowserIP:111.194.111.25:webbrowser控件 销毁IP:218.14.17.138:mfc webbrowser 属性IP:183.61.244.9:mfc 设置webBrowser编码 .IP:1.193.57.36:WebBrowser中打开新页面IP:113.107.200.202:MFC 控件隐藏后IP:110.90.119.113:ie控件ShowWindow
bugIP:218.241.104.7:webbrowser控件 Window Styles WS_VISIBLEIP:113.10.223.197:webbrowser 销毁IP:121.14.96.124:ie 控件 打开新隐藏页面IP:61.135.190.101:cIP:14.223.140.19:动态创建控件是否要手动销毁

我要回帖

更多关于 大发彩票官网手机版 的文章

 

随机推荐