簡體   English   中英

在C#WPF表單中運行javascript

[英]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();
    "
    );

為什么您“需要用戶提交簡單的JavaScript”? 您的應用程序是什么,用戶需要它做什么? 您為什么決定使用腳本語言來做到這一點? 我並不是說這是錯誤的答案,而是您沒有為這個結論辯護。

如果您的應用程序將由“很少有編程經驗的人”使用,則建議您不要實施腳本語言。 非程序員很難理解像源代碼和變量這樣的基本概念。

我建議先調查宏錄制以進行用戶腳本編寫。 對於.NET,有UI自動化White自動化框架。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM