1

*これは Web ベースのアプリケーションではなく、Windows ベースであることに注意してください。

アプリケーションによって実行される単純な JavaScript をユーザーが送信する必要があるアプリケーションを構築しています。

スクリプトは、c# ビルドの一部である関数を呼び出します。

例:

C# コード:

public void helloWorld()
{
    Debug.WriteLine("hello world");
}

ユーザーが送信した Javascript:

helloWorld();

JavaScript は実行時にアプリケーションによって解析され、C# コードで必要な関数を呼び出します。

どうして?..

私のアプリは、プログラミングの経験がほとんどない人が使用します。彼らは非常に単純な JavaScript を入力し、アプリはユーザーのコンピューターでいくつかのタスクを自動化しようとします。私が JavaScript を使用する理由は、単純で、経験の少ない人でも簡単に習得できるからです。

4

3 に答える 3

3

アプリケーションに 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>
于 2012-04-16T15:04:43.660 に答える
3

次に、ac# メソッドを呼び出す JavaScript コードを実行する例を次に示します。

[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();
    "
    );
于 2012-04-16T16:17:45.933 に答える
-1

なぜ「ユーザーに簡単なJavaScriptを送信する必要がある」のですか?あなたのアプリケーションは何ですか、そしてユーザーはそれをするために何を必要としますか?なぜスクリプト言語がこれを行う方法であると決めたのですか?私はそれが間違った答えだと言っているのではありませんが、あなたはこの結論を正当化していないと言っています。

アプリを「プログラミングの経験がほとんどない人」が使用する場合は、スクリプト言語を実装することはお勧めしません。ソースコードや変数などの基本的な概念は、プログラマー以外の人が理解するのは非常に困難です。

まず、ユーザースクリプトのマクロ記録を調査することをお勧めします。.NETには、 UIオートメーションホワイトオートメーションフレームワークがあります。

于 2012-04-16T16:26:54.903 に答える