//自动化 - 获取选区文本查单词 //获取选区在线查单词: doc://library-guide/std/key/hotkey.html#flashDict import win.ui; /*DSG{{*/ var winform = win.form(text="超级热键 - 获取选区文本查单词";right=757;bottom=467) winform.add( edit={cls="edit";left=32;top=35;right=725;bottom=414;edge=1;multiline=1;z=1} ) /*}}*/ import winex.tooltip; import winex.selection; import winex.caret; import key.hotkey; superHotkey = key.hotkey(); superHotkey.loadTable({ // 按 Ctrl+Shift+#,# 触发热键( 按住 Ctrl+Shift 然后连续按 #,# 两次 )。 ["Ctrl+Shift+#,#"] = function(hFocus){ import winex.selection; var selectedText = winex.selection.get(true); selectedText = selectedText ? string.trim(selectedText); if(!#selectedText) return true;//继续按键默认操作, import string.words; import table.coca20000; //查单词 + 朗读 if( string.words(selectedText,true) ){ //是否单词 var meaning,word = table.coca20000(selectedText,true) if(meaning){ winex.tooltip.balloon(meaning); import com.wmPlayer; com.wmPlayer.url = "https://dict.youdao.com/dictvoice?audio="+word+"&type=2" } return; } //翻译 + 大声朗读 import web.edgeTextToSpeech.ui; var ttsForm = web.edgeTextToSpeech.ui(); ttsForm.edit.selText = selectedText; ttsForm.edit.hide = true; ttsForm.add( custom={cls="custom";left=12;top=10;right=804;bottom=514;z=8;dt=1;dl=1;dr=1;db=1} ); import web.form.chat; var chatUi = web.form.chat(ttsForm.custom); chatUi.writeDelta(selectedText+'\r\n\r\n') if( !string.find(selectedText,":") && string.find(selectedText,"\a+\s\a+") ){ chatUi.chatMessage.system("你是一位专业翻译。请将用户输入的英文翻译为中文。 在遵守原意的前提下,让翻译后的内容更地道、更通俗易懂,更符合以中文作为母语的表达习惯。 并以教学为目的对翻译时涉及的重点语法与技巧进行适当的讲解(以中文讲解),如果遇到特殊的语言现象、文化背景知识也请适当说明(以中文说明)。") } else{ chatUi.chatMessage.system("你是一位专业翻译。请将用户输入的中文翻译为英文。 在遵守原意的前提下,让翻译后的内容更地道、更通俗易懂,更符合以英文作为母语的表达习惯。 并以教学为目的对翻译时涉及的重点语法与技巧进行适当的讲解(以中文讲解),如果遇到特殊的语言现象、文化背景知识也请适当说明(以中文说明)。 ") } chatUi.chatMessage.prompt(selectedText); thread.invoke( function(chatUi){ import web.rest.aiChat; var aiClient = web.rest.aiChat( key = '\0\1\96'; url = "https://ai.aardio.com/api/v1/"; model = "imtip"; temperature = 0.5; ) //调用聊天接口。 var ok,err = aiClient.messages(chatUi.chatMessage, function(deltaText,reasoning){ if(reasoning) chatUi.showThinking(reasoning); chatUi.assistant(deltaText); } ); if(err) chatUi.errorMessage(err) },chatUi ) ttsForm.onInitDialog = function(hwnd,message,wParam,lParam){ ..win.showForeground(hwnd) } ttsForm.doModal(); } }) winform.show(); win.loopMessage();