从C#Winforms执行JavaScript代码
我正在尝试使用Winforms执行JavaScript&我想从JavaScript代码中获取文本。我需要翻译几行使用谷歌翻译服务。遇到了这个漂亮的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
<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
哦,很好,我误读了。我会再看一遍,修改我的答案