社区
ATL
帖子详情
高分求教:BHO技术拦截Flash,但写入的js代码无效!
shines77
2005-05-13 01:42:57
使用IE的BHO技术,Browser Helper Object写的Flash拦截,原来的Flash代码已经被替换成我定义的HTML了,但写入的JS代码(JavaScript)代码却无效,好像被过滤或没有生效
在事件OnDocumentComplete, OnNavigateComplete2完成后替换原来的Flash Code
不知道该如何让写入的JS生效,多指教。谢谢~
呵呵,不好意思,高分也只能一次给200,不够再说
...全文
325
13
打赏
收藏
高分求教:BHO技术拦截Flash,但写入的js代码无效!
使用IE的BHO技术,Browser Helper Object写的Flash拦截,原来的Flash代码已经被替换成我定义的HTML了,但写入的JS代码(JavaScript)代码却无效,好像被过滤或没有生效 在事件OnDocumentComplete, OnNavigateComplete2完成后替换原来的Flash Code 不知道该如何让写入的JS生效,多指教。谢谢~ 呵呵,不好意思,高分也只能一次给200,不够再说
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shines77
2005-06-01
打赏
举报
回复
发了个新贴,此贴先结了,我知道我问得唐突也比较白痴(本人也不太喜欢这样的行为),但是由于比较忙,见谅
http://community.csdn.net/Expert/topic/4052/4052185.xml?temp=.4946253
newcore
2005-05-29
打赏
举报
回复
恩...
modena
2005-05-27
打赏
举报
回复
呵呵,顺便送上调用方法:
CStringArray pParam;
pParam.Add( pszServerAddr );
pParam.Add( pszUserName );
pParam.Add( pszPassword );
CallJScript( "SetLastUser", pParam );
CString strStatus;
strStatus.Format("%d", (int) bAutoLogin);
CallJScript( "setLastPasswordStatus", strStatus );
lion_wing
2005-05-26
打赏
举报
回复
OnDocumentComplete, OnNavigateComplete2里,那时,代码执行完了,你写的JS就不执行了。
好的办法,我也没有。
不过,可以在IE加载网页前分析网页代码,然后替换,可是,这样就更改了原来网页的代码,不太好。
不知道楼主有什么好的方法?
lion_wing
2005-05-26
打赏
举报
回复
来了,楼主解决了吗?
shines77
2005-05-26
打赏
举报
回复
FT, 送分都没人要。。。结贴之前我会转到非技术区的
shines77
2005-05-26
打赏
举报
回复
下班了,明天再试试 modena(非云) 的代码,谢谢各位
star_wxd
2005-05-26
打赏
举报
回复
楼上,顶
modena
2005-05-26
打赏
举报
回复
通过如下代码可以直接调用BHO截获的IID_IHTMLDocument2 m_spDoc内的JScript代码
BOOL CallJScript( const CString strFunc, CStringArray& paramArray, CComVariant* pVarResult )
{
CComPtr<IDispatch> spScript;
if(!GetJScript(spScript))
{
ShowError("Cannot GetScript");
return false;
}
CComBSTR bstrMember(strFunc);
DISPID dispid = NULL;
HRESULT hr = spScript->GetIDsOfNames(IID_NULL,&bstrMember,1,
LOCALE_SYSTEM_DEFAULT,&dispid);
if(FAILED(hr))
{
ShowError(GetSystemErrorMessage(hr));
return false;
}
const int arraySize = paramArray.GetSize();
DISPPARAMS dispparams;
memset(&dispparams, 0, sizeof dispparams);
dispparams.cArgs = arraySize;
dispparams.rgvarg = new VARIANT[dispparams.cArgs];
for( int i = 0; i < arraySize; i++)
{
CComBSTR bstr = paramArray.GetAt(arraySize - 1 - i); // back reading
bstr.CopyTo(&dispparams.rgvarg[i].bstrVal);
dispparams.rgvarg[i].vt = VT_BSTR;
}
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(&excepInfo, 0, sizeof excepInfo);
CComVariant vaResult;
UINT nArgErr = (UINT)-1; // initialize to invalid arg
hr = spScript->Invoke(dispid,IID_NULL,0,
DISPATCH_METHOD,&dispparams,&vaResult,&excepInfo,&nArgErr);
// To get Out Param Value
// Modified by Aking.
// 2003-07-09
for( i = 0; i < arraySize; i++)
{
CString strTmp;
if( dispparams.rgvarg[i].vt == VT_BSTR )
{
strTmp = dispparams.rgvarg[i].bstrVal;
}
else
{
strTmp.Format( "%d", dispparams.rgvarg[i].lVal );
}
paramArray.SetAt( arraySize - 1 - i, strTmp ); // back reading
}
delete [] dispparams.rgvarg;
if(FAILED(hr))
{
ShowError(GetSystemErrorMessage(hr));
return false;
}
if(pVarResult)
{
*pVarResult = vaResult;
}
return true;
}
BOOL GetJScript( CComPtr<IDispatch>& spDisp )
{
if(!m_spDoc) {
return FALSE;
}
CHECK_POINTER(m_spDoc);
HRESULT hr = m_spDoc->get_Script(&spDisp);
ATLASSERT(SUCCEEDED(hr));
return SUCCEEDED(hr);
}
DouDouBug
2005-05-26
打赏
举报
回复
拿分拿分阿
Kudeet
2005-05-19
打赏
举报
回复
解决了
shines77
2005-05-19
打赏
举报
回复
送分了,来者有分,送完为止
shines77
2005-05-13
打赏
举报
回复
自己顶~~我现在采用把js代码直接写在onclick, onmouseover等事件里,OK了,但这个方法比较笨,
比如: <xxxx xxxx onclike='document.all["xxxxx"].style.display="none";return true;'>
一个
BHO
示例,主要功能实现URL
拦截
用VC做的IE插件,采用ATL工程,插入BHO 在INVOke中写程序。
VB不使用
BHO
拦截
IE事件
用VB编写的IE事件监控
代码
,前一个
代码
有问题,本
代码
已作修正。
BHO
插件开发的VB示例源
代码
BHO
插件开发的VB示例源
代码
是学习
BHO
的好资料。可以参考下
一个
BHO
(浏览器辅助对象)源码
BHO
源码 C++ 浏览器 这是一个例子
清除所有的
BHO
插件
运行了,马上清除IE里的所有
BHO
插件,小心使用!!!
ATL
3,248
社区成员
48,531
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章