1、环境准备
- windows 7,8,10,11操作系统
- ahk 2.x_64位
- 需要 联网!!
2、使用方式
mean, 可以在运行框中翻译翻译, mean可以把其他语言翻译成中文,把中文翻译成英文。
meank ,可以把中文翻译成韩文,韩文翻译回中文
meanj ,可以把职工文翻译成日文,日文翻译回中文
中<->英翻译 :mean 中<->韩互译 :meank 中<->日互译 : meanj
- 输入win+R打开windows运行框
- 在运行框中输入:mean hello world ,输出 “你好世界”
- 在运行框中输入:mean 你好 ,输出 “hello”
- 在运行框中输入:meank 你好 , 输出 “안녕하세요”
- 在运行框中输入:meanj 你好 , 输出 “こんにちは”
- 在运行框中输入:mean ,输出 [剪切板] 翻译数据 ,注意mean后有空格
- 表达式按== 触发结果
3、演示
4、代码
#HotIf winActive("运行") and winActive("ahk_class #32770")
#MaxThreadsPerHotkey 10
;在运行框中执行强大的计算功能,包括数学运算等
:*?:==::{
try{
rawText:=ControlGetText("Edit1","A") ;
fullResult:=runbox.calculateExpression(rawText)
if fullResult{
ControlsetText(fullResult,"Edit1","A")
}
ControlSend("{END}","Edit1","A")
}
}
#HotIf
;==========================================================================================================系统快捷键映射
;执行各种运算取值
class runbox
{
static userAgent:="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"
;执行比表达式计算,"==" 触发,callflag是其他函数调用该方法
static calculateExpression(rawstr,callflag:=0)
{
;翻译中<->英翻译,中<->韩互译,中<->日互译 ,注意:判断顺序不能换
if ((i2:=(inStr(rawStr,"meank ")==1)) or (i3:=inStr(rawStr,"meanj ")==1 or i1:=(inStr(rawStr,"mean ")==1)) ){
str:= inStr(trim(rawStr)," ")?subStr(rawStr,inStr(trim(rawStr)," ")+1):trim(A_Clipboard)
result:=this.meanExpression(str,i1??""?"url_ALL":false or i2??""?"url_KO":"" or i3??""?"url_JA":"")
fulltxt:=rawStr . (inStr(Trim(rawStr)," ")?"":"[剪切板]") "=" . result
return fulltxt
}
}
;搜狗翻译 翻译的语种,kr韩国,ja日本,其它就是中英,其他-中互换
static meanExpression(keyword,typeFlag:="url_ALL")
{
if not ak.ConnectedToInternet(){ ;互联网没有连接
return
}
_map:=Map()
_map.set("url_ALL",'https://fanyi.sogou.com/text?keyword={1}') ;任意语言转为中文,中文转英文
_map.set("url_KO",'https://fanyi.sogou.com/text?keyword={1}&transfrom=auto&transto=ko&model=general&exchange=true') ;中韩互换
_map.set("url_JA",'https://fanyi.sogou.com/text?keyword={1}&transfrom=auto&transto=ja&model=general&exchange=true') ;中日互换
encode_url:=ak.urlEncode(Format(_map.get(typeFlag),keyword))
static req := ComObject("WinHttp.WinHttpRequest.5.1")
req.Open("get",encode_url,true) ;true 异步,false 同步(默认)
req.setRequestHeader("User-Agent",this.userAgent) ;在open之后
req.send()
req.WaitForResponse()
result:=req.ResponseText
return ak.getInnerHtml(result,"trans-result",0)
}
}
;==========================================================================================================系统快捷键映射
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ak工具类class
class ak
{
;判断是否连接互联网
static ConnectedToInternet(flag:=0x40) {
Return DllCall("Wininet.dll\InternetGetConnectedState", "Str", flag,"Int",0)
}
;Func 利用js对url编码,由于采用js方式加密所以字符串中的“ " ”需要处理一下
static urlEncode(url)
{
static htmlfile := ComObject('htmlfile')
htmlfile.write('<meta http-equiv="X-UA-Compatible" content="IE=edge">')
return htmlfile.parentWindow.encodeURI(url) ;还有一个方法encodeURIComponent会连http都编码
}
;Func 获取某个指定id的元素内容,htmlcontent:整个html页面,id:标签里面的id,htmlflag:如果有html就返回html
;htmlflag:=0就是只取标签中的文字,不管有多少个标签。默认该值返回标签
static getInnerHtml(htmlcontent,id,htmlflag:=1)
{
js:= ComObject("htmlfile")
js.write(htmlcontent)
document :=js.parentWindow.document
element:=document.getElementByID(id)
if element{
return htmlflag?element.innerHtml:element.innerText
}
}
}
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ak工具类class
5、总结
这个功能需要联网,最开始是打游戏亚洲服的时候很多韩国日本玩家,发的消息看不懂后来才添加的meanj,和meank
完整功能参考:windows超级运行框-表达式计算(12)汇总
各位大佬觉得还可以怎么操作? 欢迎评论区留言讨论!
感谢分享,翻译功能正好