从C#Winforms执行JavaScript代码

从C#Winforms执行JavaScript代码,c#,javascript,translation,C#,Javascript,Translation,我正在尝试使用Winforms执行JavaScript&我想从JavaScript代码中获取文本。我需要翻译几行使用谷歌翻译服务。遇到了这个漂亮的javascript代码,它可以翻译给定的消息并将其显示在警报框中 <html> <head> <script type='text/javascript' src='http://www.google.com/jsapi'></script> <script type='text/javascri

我正在尝试使用Winforms执行JavaScript&我想从JavaScript代码中获取文本。我需要翻译几行使用谷歌翻译服务。遇到了这个漂亮的javascript代码,它可以翻译给定的消息并将其显示在警报框中

<html>
<head>
<script type='text/javascript' src='http://www.google.com/jsapi'></script>
<script type='text/javascript'>
google.load('language','1');
function init () {
google.language.translate('How are you?', 'en', 'es', function (translated) {
    alert(translated.translation);
});
}
google.setOnLoadCallback(init);
</script>
</head>
    <body>
    </body>
</html> 

load('language','1');
函数init(){
google.language.translate('你好吗?','en','es',函数(已翻译){
警报(翻译。翻译);
});
}
setOnLoadCallback(init);

有什么方法可以让我传递任何字符串而不是“你好吗?”&如果我可以在C#winfrom上下文中获取翻译文本(从警报框或使用任何
var
)。

好的,我做了一些研究。因此,在表单中添加一个webbrowser,我敢打赌这对您来说会很好:

    public Form1()
    {
        InitializeComponent();
        webBrowser1.ObjectForScripting = new MyScript();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        string myTranslatedText = "Hello, how are you?";
        webBrowser1.DocumentText = @"
            <html>
            <head>
                <script type='text/javascript' src='http://www.google.com/jsapi'></script>
                <script type='text/javascript'>
                    google.load('language','1');
                    function init () {
                    google.language.translate('" + myTranslatedText + @"', 'en', 'es', function (translated) {
                        window.external.CallServerSideCode(translated.translation);
                    });
                    }
                    google.setOnLoadCallback(init);                        
                </script>
            </head>
                <body>
                </body>
            </html>";
    }
    [ComVisible(true)]
    public class MyScript
    {
        public void CallServerSideCode(string myResponse)
        {
            Console.WriteLine(myResponse); //do stuff with response
        }
    }
public Form1()
{
初始化组件();
webBrowser1.ObjectForScript=新建MyScript();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
string myTranslatedText=“你好吗?”;
webBrowser1.DocumentText=@“
load('language','1');
函数init(){
google.language.translate(“+myTranslatedText+@”,“en”,“es”,函数(已翻译){
window.external.CallServerSideCode(translated.translation);
});
}
setOnLoadCallback(init);
";
}
[ComVisible(true)]
公共类MyScript
{
public void CallServerSideCode(字符串myResponse)
{
Console.WriteLine(myResponse);//使用response执行操作
}
}

请阅读以下URL,谷歌将在12月删除免费翻译API:那么你的意思是这段代码不再有效了?是的,完全翻译API V1.0将离线,V2.0 API需要付费。2000万个字符20美元。See Bing提供了一个免费的api。我更新了我的答案。您只需将“myResults from callback”替换为带有响应的返回变量,并更新html字符串以包含您的请求
Page\u Load
我想我们在web表单中使用它,对于winforms,我们使用
Form1\u Load
哦,很好,我误读了。我会再看一遍,修改我的答案