C#调用WSC(Windows Script Component)
WSC是一個(gè)很老的東西了,我現(xiàn)在是想用C#去執(zhí)行一個(gè)WSH(javascript)的腳本,卻又不想通過(guò)Process卻調(diào)用cscript,直接call函數(shù)最好了。
WSC 1 <?xml version="1.0" encoding="utf-8"?> 2 <component> 3 <?component error="true" debug="true"?> 4 <registration 5 description="test" 6 progid="test.wsc" 7 clsid="{F0590009-B8C7-4B69-9DA9-6E1919F07936}" 8 /> 9 <public> 10 <method name="hello"> 11 </method> 12 </public> 13 <script language="javascript"> 14 <![CDATA[ 15 function hello() { 16 return "Hello WSC"; 17 } 18 ]]> 19 </script> 20 </component>將上面的代碼保存為 test.wsc,然后右鍵選擇注冊(cè)。接著就可以去C#中調(diào)用了,這里用了.Net 4.0的 dynamic類型
Type TestType = Type.GetTypeFromProgID("test.wsc"); dynamic test= Activator.CreateInstance(TestType ); Console.Out.WriteLine(test.hello());不過(guò),如果你想傳參數(shù)的話,問(wèn)題就變得復(fù)雜了。C#的class是managed,javascript是訪問(wèn)不到,不過(guò)傳個(gè)值還是可以的,比如int的值
暫時(shí)沒(méi)時(shí)間研究在managed和unmanaged之間轉(zhuǎn)換問(wèn)題,哪位仁兄會(huì)的話,不妨分享下^_^
x64問(wèn)題
在x64位的Win7上右鍵注冊(cè)wsc是不好使的,因?yàn)槟J(rèn)是注冊(cè)system32下面的scrobj.dll,64程序訪問(wèn)就會(huì)未注冊(cè)的問(wèn)題。
據(jù)說(shuō)用下面的語(yǔ)句注冊(cè)和卸載就可以了(有待實(shí)驗(yàn))
"C:\WINDOWS\SYSWOW64\REGSVR32.EXE" /i:"%1" "C:\WINDOWS\SYSWOW64\scrobj.dll" "C:\WINDOWS\SYSWOW64\REGSVR32.EXE" /u /n /i:"%1" "C:\WINDOWS\SYSWOW64\scrobj.dll"調(diào)用js的其他方法
- IronJS:使用DLR,以類似IronPython和IronRuby的方式運(yùn)行,據(jù)介紹速度還挺快
- rhino:codeproject上有一篇文章介紹如何在C#中用rhino去執(zhí)行javascript
轉(zhuǎn)載于:https://www.cnblogs.com/windtail/archive/2012/11/26/2790090.html
總結(jié)
以上是生活随笔為你收集整理的C#调用WSC(Windows Script Component)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于 【通过代理访问】 的研究,【突破
- 下一篇: c# 获取页面源码