[英]Run javascript in C# WPF Form
* 請注意,這不是基於Web的應用程序,而是基於Windows的。
我正在構建一個應用程序,我將需要用戶提交將由該應用程序運行的簡單javascript。
這些腳本將調用c#構建中的函數。
一個例子:
C#代碼:
public void helloWorld()
{
Debug.WriteLine("hello world");
}
用戶提交的Javascript:
helloWorld();
應用程序將在運行時解析JavaScript,然后在我的C#代碼中調用所需的函數。
為什么?..
我的應用程序將被很少編程經驗的人使用,他們輸入非常簡單的JavaScript,並且該應用程序將嘗試自動執行用戶計算機上的一些任務。 因此,我之所以使用JavaScript是因為對於那些沒有經驗的人來說,它非常簡單易學。
聽起來您好像想要應用程序的JavaScript解析器。 老實說,考慮到腳本的上下文和您的代碼不同,我認為您正在做的事情是不可能的。 但是,該項目似乎正在做一些可能使您到達正確位置的事情:
http://javascriptdotnet.codeplex.com/
就個人而言,我認為制作某種XML格式會很有用(例如UrlRewriter.net如何使重寫URL變得容易):
<xml>
<commands>
<!-- Expose a Set of Condition Objects to Select From -->
<if condition="YourApplication.Conditions.RightClickOnDesktop">
<print text="HelloWorld" />
</if>
</commands>
這是一個運行javascript代碼的示例,該代碼依次調用ac#方法
[System.Runtime.InteropServices.ComVisible(true)]
public class CSharpClass
{
public void MsgBox(string s)
{
MessageBox.Show(s);
}
}
--
Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC"));
dynamic obj = Activator.CreateInstance(scriptType, false);
obj.Language = "Javascript";
obj.AddObject("mywindow", new CSharpClass(), true);
var result = obj.Eval(
@"
function test(){
mywindow.MsgBox('hello');
}
test();
"
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.