c# 获得js执行的html,C#调用htmlfile组件,并执行js函数

前一篇我测试了vba调用htmlfile做反混淆,并执行js函数的代码。本文换成C#实现。

本文地址:http://www.cnblogs.com/Charltsing/p/CSharpEval.html

联系QQ:564955427

C#调用com组件需要使用CreateInstance,当然,我们也可以通过反编译vb.net里面的CreatObject来修改成C#代码。我从网上下载了一个

[SecurityPermission(SecurityAction.Demand, UnmanagedCode = true)]

public static object CreateObject(string ProgId, [Optional, DefaultParameterValue("")] string ServerName)

{

object obj2;

if (ProgId.Length == 0)

{

throw new Exception ("Creatobject error!");

}

if ((ServerName == null) || (ServerName.Length == 0))

{

ServerName = null;

}

else if (Thread.CurrentThread.CurrentCulture.CompareInfo.Compare(Environment.MachineName, ServerName, CompareOptions.IgnoreCase) == 0)

{

ServerName = null;

}

try

{

Type typeFromProgID;

if (ServerName == null)

{

typeFromProgID = Type.GetTypeFromProgID(ProgId);

}

else

{

typeFromProgID = Type.GetTypeFromProgID(ProgId, ServerName, true);

}

obj2 = Activator.CreateInstance(typeFromProgID);

}

catch (COMException ex)

{

if (ex.ErrorCode == -2147023174) //800706ba The RPC server is unavailable, The server name is wrong in the client machine‘s System Registry entry for the remote application

{

throw new Exception("Creatobject error! the RPC server is unavailable!");

}

throw new Exception("Creatobject error! " + ex.Message);

}

catch (Exception e)

{

throw new Exception("Creatobject error! " + e.Message);

}

return obj2;

}

这样,我们也可以在C#里面直接使用CreatObject了

我们还使用前一篇文章中用到的测试网站,改成c#代码如下:

dynamic ohtmlDoc = CreateObject("htmlfile");

string js = 要反混淆的js代码;

//1、反混淆js

js = "document.write(" + js.Substring(5);

ohtmlDoc.write("");

js = "";

ohtmlDoc.write(js);

ohtmlDoc.write("");

string html = ohtmlDoc.body.innertext; //反混淆之后的html

然后再使用htmlfile.parentWindow.execScript(js代码),就可以通过eval执行js函数了。

需要注意的是,dynamic 只在.net 4.0之后支持,如果是之前的版本,请使用反射调用。

本文地址:http://www.cnblogs.com/Charltsing/p/CSharpEval.html

原文:http://www.cnblogs.com/Charltsing/p/CSharpEval.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值