------ #### VSoft V2.0.2412.1001 - *.[新增]拖放文件到主界面,支持直接插入到拖放的位置。 - *.[新增]新增支持设置运行次数的功能,可以快速进行多开。 - *.[新增]支持保存大小和选中的栏目和分类位置。 - *.[改进]切换栏目会记录列表滚动条位置和选中的分类。 - *.[改进]编辑添加的内置功能,将不允许修改路径。 - *.[改进]读取快捷方式时,支持自动获取图标信息。 - *.[改进]新增软件完成后,不再刷新列表,而是直接添加到列表末尾。 - *.[改进]新增软件或拖放软件后,界面直接定位到添加的列表位置。 - *.[改进]点击显示主界面时,如果存在模式窗体,则将模式窗体显示在前面。 - *.[改进]当百度翻译出错时自动重试翻译。 - *.[修复]栏目和分类进行拖放操作时,拖放出控件会残留拖放标志的BUG。
150 lines
5.1 KiB
C#
150 lines
5.1 KiB
C#
using Newtonsoft.Json.Linq;
|
||
using ryCommon;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.ComponentModel;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Net;
|
||
using System.Security.Cryptography;
|
||
using System.Text;
|
||
using System.Threading;
|
||
using System.Windows.Forms;
|
||
|
||
namespace VSoft.Tools
|
||
{
|
||
public partial class FrmTrans : Skins.SKinForm
|
||
{
|
||
public FrmTrans()
|
||
{
|
||
InitializeComponent();
|
||
CbbLngFrom.SelectedIndex = 0;
|
||
CbbLngTo.SelectedIndex = 0;
|
||
}
|
||
private string Tran(string from_txt,string lng_from,string lng_to)
|
||
{
|
||
try
|
||
{
|
||
if (from_txt.Length == 0) { return ""; }
|
||
// 原文
|
||
string q = from_txt;
|
||
// 源语言
|
||
string from = lng_from;
|
||
// 目标语言
|
||
string to = lng_to;
|
||
// 改成您的APP ID
|
||
string appId = "20220508001207657";
|
||
Random rd = new Random();
|
||
string salt = rd.Next(100000).ToString();
|
||
// 改成您的密钥
|
||
string secretKey = "l6ngE7GjtdvRESJqQzDL";
|
||
RyWeb.QuickWeb web = new RyWeb.QuickWeb();
|
||
string sign = EncryptString(appId + q + salt + secretKey);
|
||
string post_data = "q=" + web.UrlEncode(q);
|
||
post_data += "&from=" + from;
|
||
post_data += "&to=" + to;
|
||
post_data += "&appid=" + appId;
|
||
post_data += "&salt=" + salt;
|
||
post_data += "&sign=" + sign;
|
||
var http= web.Post("http://api.fanyi.baidu.com/api/trans/vip/translate", post_data);
|
||
JObject jo = JObject.Parse(http.Html);
|
||
if(jo.GetJsonValue("error_code",0)>0)
|
||
{
|
||
http = web.Post("http://api.fanyi.baidu.com/api/trans/vip/translate", post_data);
|
||
jo = JObject.Parse(http.Html);
|
||
}
|
||
var trans_result = jo["trans_result"];
|
||
if (trans_result != null)
|
||
{
|
||
var jarr = (JArray)trans_result;
|
||
var text = "";
|
||
for (int i = 0; i < jarr.Count; i++)
|
||
{
|
||
if (text.Length > 0) { text += "\r\n"; }
|
||
if (jarr[i] != null)
|
||
{
|
||
var dst = jarr[i]["dst"];
|
||
if (dst != null) { text+= dst.ToString(); }
|
||
}
|
||
}
|
||
last_text = from_txt;
|
||
return text;
|
||
}
|
||
else
|
||
{
|
||
|
||
}
|
||
return "";
|
||
}
|
||
catch(Exception ex)
|
||
{ return "错误=>"+ex.Message; }
|
||
}
|
||
string last_text = "";
|
||
// 计算MD5值
|
||
public static string EncryptString(string str)
|
||
{
|
||
MD5 md5 = MD5.Create();
|
||
// 将字符串转换成字节数组
|
||
byte[] byteOld = Encoding.UTF8.GetBytes(str);
|
||
// 调用加密方法
|
||
byte[] byteNew = md5.ComputeHash(byteOld);
|
||
// 将加密结果转换为字符串
|
||
StringBuilder sb = new StringBuilder();
|
||
foreach (byte b in byteNew)
|
||
{
|
||
// 将字节转换成16进制表示的字符串,
|
||
sb.Append(b.ToString("x2"));
|
||
}
|
||
// 返回加密的字符串
|
||
return sb.ToString();
|
||
}
|
||
private void Trans()
|
||
{
|
||
var lng_from = lng_convert(CbbLngFrom.Text);
|
||
var lng_to = lng_convert(CbbLngTo.Text);
|
||
string lng_convert(string lng_text)
|
||
{
|
||
if (lng_text == "自动") { return "auto"; }
|
||
else if (lng_text == "中文") { return "zh"; }
|
||
else if (lng_text == "英文") { return "en"; }
|
||
else if (lng_text == "日语") { return "jp"; }
|
||
else if (lng_text == "韩语") { return "kor"; }
|
||
else { return ""; }
|
||
}
|
||
var from_text = RichText.Text;
|
||
Thread th = new Thread(Start);
|
||
th.Start();
|
||
void Start()
|
||
{
|
||
var to_text= Tran(from_text, lng_from, lng_to);
|
||
this.Invoke(new Action(() =>
|
||
{
|
||
RichResult.Text = to_text;
|
||
}));
|
||
}
|
||
}
|
||
private void CbbFrom_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
Trans();
|
||
}
|
||
|
||
private void CbbTo_SelectedIndexChanged(object sender, EventArgs e)
|
||
{
|
||
Trans();
|
||
}
|
||
|
||
private void RichText_TextChanged(object sender, EventArgs e)
|
||
{
|
||
Trans();
|
||
}
|
||
|
||
private void FrmTrans_Load(object sender, EventArgs e)
|
||
{
|
||
var screen = Screen.FromPoint(MousePosition).WorkingArea;
|
||
this.Location = new Point(screen.Left+ ((screen.Width-this.Width)/2),screen.Top+ ((screen.Height - this.Height) / 2));
|
||
}
|
||
}
|
||
}
|