aardio 文档
aardio 范例: 超级热键 - 获取选区文本查单词
获取选区在线查单词
//自动化 - 获取选区文本查单词
//获取选区在线查单词: https://www.aardio.com/zh-cn/doc/library-guide/std/key/hotkey.html#web.view
import win.ui;
/*DSG{{*/
var winform = win.form(text="超级热键 - 获取选区文本查单词")
winform.add(
edit={cls="edit";left=32;top=35;right=725;bottom=414;edge=1;multiline=1}
)
/*}}*/
import winex.tooltip;
import winex.selection;
import winex.caret;
import key.hotkey;
superHotkey = key.hotkey();
superHotkey.loadTable({
// 按 Ctrl + Shift + I 触发热键
["Ctrl+Shift+I"] = function(hFocus){
//获取当前选区文本
var txt = winex.selection.get(true);
if(!#txt) return true;//选区文本为空,继续发送按键
//本地英中翻译查词
import string.words;
var cn,en = string.words(txt)
if(cn){
var x,y = winex.caret.getPos();
winex.tooltip.popup(cn,x,y - 50);
}
//朗读单词
if(en){
//用 := 操作符避免重复创建控件
wmPlayer := com.CreateObject("WMPlayer.OCX");
wmPlayer.url = "https://dict.youdao.com/dictvoice?audio="+txt+"&type=2";
return;
}
//如果不包含空格分隔的英文单词则退出
if(!string.find(txt,"\a+\s+\a+")){
return true;
}
//创建多线程以执行耗时操作,以避免阻塞键盘钩子消息导致热键失效。
thread.invoke(
function(txt){
import web.rest.aiChat;
import key;
var ai = web.rest.aiChat(
key = "sk-请修改密钥";
url = "https://api.deepseek.com/v1";//接口地址
model = "deepseek-chat";//模型名称首字符为 @ 则使用 Anthropic 接口
temperature = 0.5;//温度
maxTokens = 1024,//最大回复长度
)
//创建 AI 会话消息队列
var msg = web.rest.aiChat.message();
//添加系统提示词
msg.system("你是一个翻译助手,如果用户输入主要为中文请翻译为英文,反之则将输入翻译为英文。")
//添加用户提示词
msg.prompt("请翻译:"+txt);
//获取文本选区坐标
import winex.caret;
var x,y = winex.caret.getPos(,-50);
import winex.tooltip;
var ok,err = ai.messages(msg,function(delta){
//增量显示屏幕提示
if( winex.tooltip.popupDelta(delta,x,y ) ){
thread.delay(3000);//已完成输出,延时避免线程退出导致提示立即关闭。
}
} );
//显示错误信息
if(err)winex.tooltip.popupDelta(err,x,y )
},txt
)
}
})
win.loopMessage();
Markdown 格式