软件效果:

实现原理很简单,就是封装谷歌翻译网站:http://translate.google.cn/,一个WebBrowser“肢解”谷歌翻译网站的HtmlElement元素,删除不要的,留下需要的就是了,没什么难度

实现步骤:

一个winform窗体+一个WebBrowser控件

 

设置WebBrowser的URL为谷歌翻译网站,删除不需要的html元素

全部代码:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Shown += Form1_Shown;
}
const string url = "http://translate.google.cn/?hl=zh-cn#zh-CN/en/%E6%9D%A5%E8%87%AA%0Ahttp%3A%2F%2Ftranslate.google.cn%2F";
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.IsWebBrowserContextMenuEnabled = false;
webBrowser1.ScriptErrorsSuppressed = true;
webBrowser1.Url = new Uri(url);
}
void Form1_Shown(object sender, EventArgs e)
{
while (webBrowser1.Document == null)
Application.DoEvents();
HtmlElement element;
deleteAllElement(webBrowser1.Document.Body, "DIV", "gt-c", out element);
deleteAllElement(element, "DIV", "gt-form-c", out element);
deleteAllElement(element, "FORM", "gt-form", out element);
deleteAllElement(element, "DIV", "gt-text-all", out element);
deleteAllElement(element, "DIV", "gt-main", out element);
deleteAllElement(element, "DIV", "gt-text-c", out element);
deleteElementByID(element, "gt-ft"); //获得gc-text-top元素
foreach (HtmlElement ele in element.Children)
{
if (ele.Id == "gt-text-top")
{
element = ele;
break;
}
} #region 去掉 上传,帮助
HtmlElement srcElement = null;
foreach (HtmlElement ele in element.Children)
{
if (ele.Id == "gt-src-c")
{
srcElement = ele;
break;
}
}
deleteAllElement(srcElement, "", "gt-src-p", out srcElement);
deleteAllElement(srcElement, "DIV", "gt-src-wrap", out srcElement); #endregion
//去掉有错误
#region 去掉 上传,帮助
HtmlElement resElement = null;
foreach (HtmlElement ele in element.Children)
{
if (ele.Id == "gt-res-c")
{
resElement = ele;
break;
}
}
deleteAllElement(resElement, "", "gt-res-p", out resElement);
deleteAllElement(resElement, "", "gt-res-data", out resElement);
deleteAllElement(resElement, "DIV", "gt-res-wrap", out resElement);
deleteElementByID(resElement, "gt-res-tools");
#endregion
} void deleteAllElement(HtmlElement HtmlEle, string TagName, string IgroneID, out HtmlElement element)
{
element = null;
if (HtmlEle == null) return;
List<HtmlElement> lst = new List<HtmlElement>(); foreach(HtmlElement div in HtmlEle.Children)
{ if (!String.IsNullOrEmpty(TagName) && div.TagName != TagName) continue;
if (div.Id != IgroneID)
{
lst.Add(div); }
else
element = div;
}
foreach (HtmlElement ele in lst)
{
IHTMLDOMNode node = ele.DomElement as IHTMLDOMNode;//this.webBrowser1.DomElement as mshtml.IHTMLDOMNode;
if (node != null)
{
node.parentNode.removeChild(node);
}
}
}
void deleteElementByID(HtmlElement HtmlEle, string DeleteID)
{ foreach (HtmlElement div in HtmlEle.Children)
{ if (div.Id == DeleteID)
{
IHTMLDOMNode node = div.DomElement as IHTMLDOMNode;//this.webBrowser1.DomElement as mshtml.IHTMLDOMNode;
if (node != null)
{
node.parentNode.removeChild(node);
}
return; }
} }
}

下载地址:CSDN下载

下一节:

C#借助谷歌翻译实现翻译小工具(二)添加托盘图标

C#借助谷歌翻译实现翻译小工具(一)基本功能实现的更多相关文章

  1. 【开源一个小工具】一键将网页内容推送到Kindle

    最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...

  2. 在windows下实时监控、接受文件变化小工具

    在windows下实时监控文件变化小工具   在测试的时候,我们可能想实时监控系统打出的log信息,在unix系统上我们可以用"tail -f"实现,在windows下一般就无法做 ...

  3. 谈谈开发文本转URL小工具的思路

    URL提供了一种定位互联网上任意资源的手段,由于采用HTTP协议的URL能在互联网上自由传播和使用,所以能大行其道.在软件开发.测试甚至部署的环节,URL几乎可以说无处不再,其中用来定位文本的URL数 ...

  4. OpenCV与MFC实战之图像处理 样本采集小工具制作 c++MFC课程设计

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12111102.html 入门不久的人可以通过opencv实战来锻炼一下学习opencv的成果, ...

  5. 小白突破百度翻译反爬机制,33行Python代码实现汉译英小工具!

    表弟17岁就没读书了,在我家呆了差不多一年吧. 呆的前几个月,每天上网打游戏,我又不好怎么在言语上管教他,就琢磨着看他要不要跟我学习Python编程.他开始问我Python编程什么?我打开了我给学生上 ...

  6. 基于百度通用翻译API的一个翻译小工具

    前几天写了一个简单的翻译小工具,是基于有道翻译的,不过那个翻译接口有访问限制,超过一定次数后会提示访问过于频繁,偶然发现百度翻译API如果月翻译字符少于200万是不收取费用的,所以就注册了一个百度开发 ...

  7. (win环境)使用Electron打造一个桌面应用翻译小工具

    初始化项目 npm init 修改package.json {"name": "trans","version": "1.0.0& ...

  8. 练习-99乘法表 token生成器 翻译小工具

    一.99乘法表 1.1 技术点 记住: for 循环的使用,以及for的嵌套使用 range()的使用,掌握sep为负数的使用的使用. print() 函数的使用,默认的结尾的换行符 替换 end= ...

  9. Windows下好用到必须开机自启的小工具

    折腾过linux,黑苹果,最后还是回到了盖茨大叔的windows.得出的结论是,日常使用的话,折腾Linux还不如把精力去拿去折腾windows.分享下折腾的成果,介绍下一些很不错的小工具.     ...

随机推荐

  1. css3颜色渐变

    从上到下的线性渐变: #grad {  background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */  backgrou ...

  2. RMB转换人民币大小金额

    MXS&Vincene  ─╄OvЁ  &0000015 ─╄OvЁ  MXS&Vincene MXS&Vincene  ─╄OvЁ:今天很残酷,明天更残酷,后天很美好 ...

  3. UIView属性及方法

    @property(nonatomic) CGFloat alpha //设置视图的透明度 //透明度的设置从最小0.0到1.0 ,1.0为完全不透明, //其中这个属性只影响当前视图,并不会影响其子 ...

  4. sql 循环语句几种方式

    --第一   declare @orderNum varchar(255) create table #ttableName(id int identity(1,1),Orders varchar(2 ...

  5. Notepad++编辑Pyhton文件的自动缩进的问题(图文)

    转自:http://www.xuebuyuan.com/1102224.html 这个问题一直困扰我很久,Python对缩进很敏感,一般建议缩进用空格,而 Notepad++的自动缩进是用的TAB,g ...

  6. Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值

    Thinkphp用exp表达式执行mysql语句,查询某字段不为空is not null,自动增值 Thinkphp 的文档经常不够完整的表达MYSQL的各种组合,is not null在thinkp ...

  7. 将edit ctrL弄的像个dos

    case WM_CTLCOLOREDIT: { HWND hShellText = GetDlgItem(hDlg,IDC_TXT_SHELL); if (hShellText == (HWND)lP ...

  8. C# 控制连接超时

    首先连接超时分为三种,TCP Connection to SQL Server -> SqlConnection.Open -> SqlCommand.Execute先说第二种超时,sql ...

  9. 纯CSS实现nav导航栏+jQuery实现article区DIV切换

    效果图: main.html 代码: <!DOCTYPE html> <html> <head> <title>MyHomepage</title ...

  10. ACM第四站————最小生成树(克鲁斯卡尔算法)

    都是生成最小生成树,库鲁斯卡尔算法与普里姆算法的不同之处在于——库鲁斯卡尔算法的思想是以边为主,找权值最小的边生成最小生成树. 主要在于构建边集数组,然后不断寻找最小的边. 同样的题目:最小生成树 题 ...