mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2024-12-27 15:44:12 +08:00
.
This commit is contained in:
parent
f7b0b7c443
commit
60550d5ee0
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
set(VERSION_MAJOR 6)
|
set(VERSION_MAJOR 6)
|
||||||
set(VERSION_MINOR 5)
|
set(VERSION_MINOR 5)
|
||||||
set(VERSION_PATCH 1)
|
set(VERSION_PATCH 2)
|
||||||
set(VERSION_REVISION 0)
|
set(VERSION_REVISION 0)
|
||||||
set(LUNA_VERSION "{${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_REVISION}}")
|
set(LUNA_VERSION "{${VERSION_MAJOR},${VERSION_MINOR},${VERSION_PATCH},${VERSION_REVISION}}")
|
||||||
add_library(VERSION_DEF INTERFACE)
|
add_library(VERSION_DEF INTERFACE)
|
||||||
|
@ -187,3 +187,105 @@ DECLARE_API void *add_WebMessageReceived(void *m_host, void (*callback)(const wc
|
|||||||
return NULL;
|
return NULL;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
struct contextcallbackdatas
|
||||||
|
{
|
||||||
|
EventRegistrationToken contextMenuRequestedToken;
|
||||||
|
std::wstring label;
|
||||||
|
};
|
||||||
|
// https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/how-to/context-menus?tabs=cpp
|
||||||
|
// https://learn.microsoft.com/en-us/microsoft-edge/webview2/reference/win32/icorewebview2_11?view=webview2-1.0.2849.39
|
||||||
|
DECLARE_API void *add_ContextMenuRequested(void *m_host, int index, const wchar_t *label, void (*callback)(const wchar_t *))
|
||||||
|
{
|
||||||
|
#ifndef WINXP
|
||||||
|
contextcallbackdatas *data = new contextcallbackdatas;
|
||||||
|
data->label = label; // 持久化
|
||||||
|
[=]()
|
||||||
|
{
|
||||||
|
wil::com_ptr<ICoreWebView2Controller> m_controller(reinterpret_cast<ICoreWebView2Controller *>(m_host));
|
||||||
|
wil::com_ptr<ICoreWebView2> m_webView;
|
||||||
|
CHECK_FAILURE(m_controller->get_CoreWebView2(&m_webView));
|
||||||
|
auto m_webView2_11 = m_webView.try_query<ICoreWebView2_11>();
|
||||||
|
if (!m_webView2_11)
|
||||||
|
return S_OK;
|
||||||
|
m_webView2_11->add_ContextMenuRequested(
|
||||||
|
Callback<ICoreWebView2ContextMenuRequestedEventHandler>(
|
||||||
|
[=](
|
||||||
|
ICoreWebView2 *sender,
|
||||||
|
ICoreWebView2ContextMenuRequestedEventArgs *args)
|
||||||
|
{
|
||||||
|
wil::com_ptr<ICoreWebView2ContextMenuTarget> target;
|
||||||
|
CHECK_FAILURE(args->get_ContextMenuTarget(&target));
|
||||||
|
COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND targetKind;
|
||||||
|
BOOL hasselection;
|
||||||
|
CHECK_FAILURE(target->get_Kind(&targetKind));
|
||||||
|
CHECK_FAILURE(target->get_HasSelection(&hasselection));
|
||||||
|
if (!(hasselection && (targetKind ==
|
||||||
|
COREWEBVIEW2_CONTEXT_MENU_TARGET_KIND_SELECTED_TEXT)))
|
||||||
|
return S_OK;
|
||||||
|
wil::com_ptr<ICoreWebView2_11> m_webView2_11;
|
||||||
|
CHECK_FAILURE(sender->QueryInterface(IID_PPV_ARGS(&m_webView2_11)));
|
||||||
|
|
||||||
|
wil::com_ptr<ICoreWebView2Environment> webviewEnvironment;
|
||||||
|
CHECK_FAILURE(m_webView2_11->get_Environment(&webviewEnvironment));
|
||||||
|
auto webviewEnvironment_5 = webviewEnvironment.try_query<ICoreWebView2Environment9>();
|
||||||
|
if (!webviewEnvironment_5)
|
||||||
|
return S_OK;
|
||||||
|
wil::com_ptr<ICoreWebView2ContextMenuItemCollection> items;
|
||||||
|
CHECK_FAILURE(args->get_MenuItems(&items));
|
||||||
|
UINT32 itemsCount;
|
||||||
|
CHECK_FAILURE(items->get_Count(&itemsCount));
|
||||||
|
// Adding a custom context menu item for the page that will display the page's URI.
|
||||||
|
wil::com_ptr<ICoreWebView2ContextMenuItem> newMenuItem;
|
||||||
|
CHECK_FAILURE(webviewEnvironment_5->CreateContextMenuItem(
|
||||||
|
data->label.c_str(),
|
||||||
|
nullptr,
|
||||||
|
COREWEBVIEW2_CONTEXT_MENU_ITEM_KIND_COMMAND, &newMenuItem));
|
||||||
|
newMenuItem->add_CustomItemSelected(
|
||||||
|
Callback<ICoreWebView2CustomItemSelectedEventHandler>(
|
||||||
|
[=](
|
||||||
|
ICoreWebView2ContextMenuItem *sender,
|
||||||
|
IUnknown *args)
|
||||||
|
{
|
||||||
|
LPWSTR selecttext;
|
||||||
|
CHECK_FAILURE(target->get_SelectionText(&selecttext));
|
||||||
|
callback(selecttext);
|
||||||
|
// 不需要free,free反而会崩溃
|
||||||
|
return S_OK;
|
||||||
|
})
|
||||||
|
.Get(),
|
||||||
|
nullptr);
|
||||||
|
UINT idx;
|
||||||
|
if (index == -1)
|
||||||
|
idx = itemsCount;
|
||||||
|
else
|
||||||
|
idx = index;
|
||||||
|
CHECK_FAILURE(items->InsertValueAtIndex(idx, newMenuItem.get()));
|
||||||
|
return S_OK;
|
||||||
|
})
|
||||||
|
.Get(),
|
||||||
|
&data->contextMenuRequestedToken);
|
||||||
|
return S_OK;
|
||||||
|
}();
|
||||||
|
return data;
|
||||||
|
#else
|
||||||
|
return NULL;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
DECLARE_API void remove_ContextMenuRequested(void *m_host, void *data)
|
||||||
|
{
|
||||||
|
#ifndef WINXP
|
||||||
|
auto token = reinterpret_cast<contextcallbackdatas *>(data);
|
||||||
|
wil::com_ptr<ICoreWebView2Controller> m_controller(reinterpret_cast<ICoreWebView2Controller *>(m_host));
|
||||||
|
wil::com_ptr<ICoreWebView2> m_webView;
|
||||||
|
[&]()
|
||||||
|
{
|
||||||
|
CHECK_FAILURE(m_controller->get_CoreWebView2(&m_webView));
|
||||||
|
auto m_webView2_11 = m_webView.try_query<ICoreWebView2_11>();
|
||||||
|
if (!m_webView2_11)
|
||||||
|
return S_OK;
|
||||||
|
CHECK_FAILURE(m_webView2_11->remove_ContextMenuRequested(token->contextMenuRequestedToken));
|
||||||
|
return S_OK;
|
||||||
|
}();
|
||||||
|
delete token;
|
||||||
|
#endif
|
||||||
|
}
|
@ -5,7 +5,7 @@ from traceback import print_exc
|
|||||||
import qtawesome, requests, gobject, windows, winsharedutils
|
import qtawesome, requests, gobject, windows, winsharedutils
|
||||||
import myutils.ankiconnect as anki
|
import myutils.ankiconnect as anki
|
||||||
from myutils.hwnd import grabwindow
|
from myutils.hwnd import grabwindow
|
||||||
from myutils.config import globalconfig, static_data
|
from myutils.config import globalconfig, static_data, _TR
|
||||||
from myutils.utils import (
|
from myutils.utils import (
|
||||||
loopbackrecorder,
|
loopbackrecorder,
|
||||||
parsekeystringtomodvkcode,
|
parsekeystringtomodvkcode,
|
||||||
@ -238,7 +238,7 @@ class AnkiWindow(QWidget):
|
|||||||
collect = []
|
collect = []
|
||||||
for hira in self.example.hiras:
|
for hira in self.example.hiras:
|
||||||
if hira["orig"] == word or hira.get("origorig", None) == word:
|
if hira["orig"] == word or hira.get("origorig", None) == word:
|
||||||
collect.append('<b>{}</b>'.format(hira["orig"]))
|
collect.append("<b>{}</b>".format(hira["orig"]))
|
||||||
else:
|
else:
|
||||||
collect.append(hira["orig"])
|
collect.append(hira["orig"])
|
||||||
example = "".join(collect)
|
example = "".join(collect)
|
||||||
@ -976,11 +976,13 @@ class showdiction(LMainWindow):
|
|||||||
class searchwordW(closeashidewindow):
|
class searchwordW(closeashidewindow):
|
||||||
search_word = pyqtSignal(str, bool)
|
search_word = pyqtSignal(str, bool)
|
||||||
show_dict_result = pyqtSignal(float, str, str)
|
show_dict_result = pyqtSignal(float, str, str)
|
||||||
|
search_word_in_new_window = pyqtSignal(str)
|
||||||
|
|
||||||
def __init__(self, parent):
|
def __init__(self, parent):
|
||||||
super(searchwordW, self).__init__(parent, globalconfig["sw_geo"])
|
super(searchwordW, self).__init__(parent, globalconfig["sw_geo"])
|
||||||
# self.setWindowFlags(self.windowFlags()&~Qt.WindowMinimizeButtonHint)
|
# self.setWindowFlags(self.windowFlags()&~Qt.WindowMinimizeButtonHint)
|
||||||
self.search_word.connect(self.__click_word_search_function)
|
self.search_word.connect(self.__click_word_search_function)
|
||||||
|
self.search_word_in_new_window.connect(self.searchwinnewwindow)
|
||||||
self.show_dict_result.connect(self.__show_dict_result_function)
|
self.show_dict_result.connect(self.__show_dict_result_function)
|
||||||
self.state = 0
|
self.state = 0
|
||||||
|
|
||||||
@ -1033,8 +1035,7 @@ class searchwordW(closeashidewindow):
|
|||||||
return
|
return
|
||||||
self.textOutput.setHtml(html)
|
self.textOutput.setHtml(html)
|
||||||
|
|
||||||
def _createnewwindowsearch(self, _):
|
def searchwinnewwindow(self, word):
|
||||||
word = self.searchtext.text()
|
|
||||||
|
|
||||||
class searchwordWx(searchwordW):
|
class searchwordWx(searchwordW):
|
||||||
def closeEvent(self1, event: QCloseEvent):
|
def closeEvent(self1, event: QCloseEvent):
|
||||||
@ -1042,10 +1043,15 @@ class searchwordW(closeashidewindow):
|
|||||||
super(saveposwindow, self1).closeEvent(event)
|
super(saveposwindow, self1).closeEvent(event)
|
||||||
|
|
||||||
_ = searchwordWx(self.parent())
|
_ = searchwordWx(self.parent())
|
||||||
|
_.move(_.pos() + QPoint(20, 20))
|
||||||
_.show()
|
_.show()
|
||||||
_.searchtext.setText(word)
|
_.searchtext.setText(word)
|
||||||
_.__search_by_click_search_btn()
|
_.__search_by_click_search_btn()
|
||||||
|
|
||||||
|
def _createnewwindowsearch(self, _):
|
||||||
|
word = self.searchtext.text()
|
||||||
|
self.searchwinnewwindow(word)
|
||||||
|
|
||||||
def showmenu_auto_sound(self, _):
|
def showmenu_auto_sound(self, _):
|
||||||
|
|
||||||
menu = QMenu(self)
|
menu = QMenu(self)
|
||||||
@ -1133,6 +1139,12 @@ class searchwordW(closeashidewindow):
|
|||||||
self.tabks = []
|
self.tabks = []
|
||||||
self.setCentralWidget(ww)
|
self.setCentralWidget(ww)
|
||||||
self.textOutput = auto_select_webview(self, True)
|
self.textOutput = auto_select_webview(self, True)
|
||||||
|
self.textOutput.add_menu(
|
||||||
|
0, _TR("查词"), lambda w: self.search_word.emit(w, False)
|
||||||
|
)
|
||||||
|
self.textOutput.add_menu(
|
||||||
|
1, _TR("在新窗口中查词"), threader(self.search_word_in_new_window.emit)
|
||||||
|
)
|
||||||
self.textOutput.set_zoom(globalconfig["ZoomFactor"])
|
self.textOutput.set_zoom(globalconfig["ZoomFactor"])
|
||||||
self.textOutput.on_ZoomFactorChanged.connect(
|
self.textOutput.on_ZoomFactorChanged.connect(
|
||||||
functools.partial(globalconfig.__setitem__, "ZoomFactor")
|
functools.partial(globalconfig.__setitem__, "ZoomFactor")
|
||||||
|
@ -1163,6 +1163,9 @@ class abstractwebview(QWidget):
|
|||||||
def navigate(self, url):
|
def navigate(self, url):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def add_menu(self, index, label, callback):
|
||||||
|
pass
|
||||||
|
|
||||||
#
|
#
|
||||||
def parsehtml(self, html):
|
def parsehtml(self, html):
|
||||||
pass
|
pass
|
||||||
@ -1245,6 +1248,8 @@ class WebivewWidget(abstractwebview):
|
|||||||
winsharedutils.remove_WebMessageReceived(
|
winsharedutils.remove_WebMessageReceived(
|
||||||
self.get_controller(), self.m_webMessageReceivedToken
|
self.get_controller(), self.m_webMessageReceivedToken
|
||||||
)
|
)
|
||||||
|
for m in self.addmenu_infos:
|
||||||
|
winsharedutils.remove_ContextMenuRequested(self.get_controller(), m)
|
||||||
|
|
||||||
def bind(self, fname, func):
|
def bind(self, fname, func):
|
||||||
self.webview.bind(fname, func)
|
self.webview.bind(fname, func)
|
||||||
@ -1262,9 +1267,20 @@ class WebivewWidget(abstractwebview):
|
|||||||
webview_native_handle_kind_t.WEBVIEW_NATIVE_HANDLE_KIND_UI_WIDGET
|
webview_native_handle_kind_t.WEBVIEW_NATIVE_HANDLE_KIND_UI_WIDGET
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def add_menu(self, index, label, callback):
|
||||||
|
__ = winsharedutils.add_ContextMenuRequested_cb(callback)
|
||||||
|
self.callbacks.append(__)
|
||||||
|
self.addmenu_infos.append(
|
||||||
|
winsharedutils.add_ContextMenuRequested(
|
||||||
|
self.get_controller(), index, label, __
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, parent=None, debug=True, usedarklight=True) -> None:
|
def __init__(self, parent=None, debug=True, usedarklight=True) -> None:
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
self.webview = None
|
self.webview = None
|
||||||
|
self.callbacks = []
|
||||||
|
self.addmenu_infos = []
|
||||||
self.webview = Webview(debug=debug, window=int(self.winId()))
|
self.webview = Webview(debug=debug, window=int(self.winId()))
|
||||||
self.m_webMessageReceivedToken = None
|
self.m_webMessageReceivedToken = None
|
||||||
self.zoomfunc = winsharedutils.add_ZoomFactorChanged_CALLBACK(
|
self.zoomfunc = winsharedutils.add_ZoomFactorChanged_CALLBACK(
|
||||||
@ -1511,6 +1527,10 @@ class auto_select_webview(QWidget):
|
|||||||
on_load = pyqtSignal(str)
|
on_load = pyqtSignal(str)
|
||||||
on_ZoomFactorChanged = pyqtSignal(float)
|
on_ZoomFactorChanged = pyqtSignal(float)
|
||||||
|
|
||||||
|
def add_menu(self, index, label, callback):
|
||||||
|
self.addmenuinfo.append((index, label, callback))
|
||||||
|
self.internal.add_menu(index, label, callback)
|
||||||
|
|
||||||
def clear(self):
|
def clear(self):
|
||||||
self.lastaction = None
|
self.lastaction = None
|
||||||
self.internal.clear()
|
self.internal.clear()
|
||||||
@ -1541,6 +1561,7 @@ class auto_select_webview(QWidget):
|
|||||||
|
|
||||||
def __init__(self, parent, dyna=False) -> None:
|
def __init__(self, parent, dyna=False) -> None:
|
||||||
super().__init__(parent)
|
super().__init__(parent)
|
||||||
|
self.addmenuinfo = []
|
||||||
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
||||||
self.internal = None
|
self.internal = None
|
||||||
layout = QHBoxLayout()
|
layout = QHBoxLayout()
|
||||||
@ -1575,6 +1596,8 @@ class auto_select_webview(QWidget):
|
|||||||
self.navigate(arg)
|
self.navigate(arg)
|
||||||
elif action == 1:
|
elif action == 1:
|
||||||
self.setHtml(arg)
|
self.setHtml(arg)
|
||||||
|
for _ in self.addmenuinfo:
|
||||||
|
self.internal.add_menu(*_)
|
||||||
|
|
||||||
def _createwebview(self):
|
def _createwebview(self):
|
||||||
contex = globalconfig["usewebview"]
|
contex = globalconfig["usewebview"]
|
||||||
|
@ -341,6 +341,12 @@ add_WebMessageReceived.argtypes = (c_void_p, add_WebMessageReceived_cb)
|
|||||||
add_WebMessageReceived.restype = c_void_p
|
add_WebMessageReceived.restype = c_void_p
|
||||||
remove_WebMessageReceived = utilsdll.remove_WebMessageReceived
|
remove_WebMessageReceived = utilsdll.remove_WebMessageReceived
|
||||||
remove_WebMessageReceived.argtypes = c_void_p, c_void_p
|
remove_WebMessageReceived.argtypes = c_void_p, c_void_p
|
||||||
|
add_ContextMenuRequested_cb = CFUNCTYPE(c_void_p, c_wchar_p)
|
||||||
|
add_ContextMenuRequested = utilsdll.add_ContextMenuRequested
|
||||||
|
add_ContextMenuRequested.argtypes = c_void_p, c_int, c_wchar_p, add_ContextMenuRequested_cb
|
||||||
|
add_ContextMenuRequested.restype = c_void_p
|
||||||
|
remove_ContextMenuRequested = utilsdll.remove_ContextMenuRequested
|
||||||
|
remove_ContextMenuRequested.argtypes = c_void_p, c_void_p
|
||||||
clipboard_callback = utilsdll.clipboard_callback
|
clipboard_callback = utilsdll.clipboard_callback
|
||||||
clipboard_callback.argtypes = (c_void_p,)
|
clipboard_callback.argtypes = (c_void_p,)
|
||||||
clipboard_callback.restype = HWND
|
clipboard_callback.restype = HWND
|
||||||
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "win32 وظيفة رسم النص هوك",
|
"Win32文字绘制函数钩子": "win32 وظيفة رسم النص هوك",
|
||||||
"Win32字符串函数钩子": "win32 سلسلة هوك",
|
"Win32字符串函数钩子": "win32 سلسلة هوك",
|
||||||
"额外的钩子": "خطاف إضافية",
|
"额外的钩子": "خطاف إضافية",
|
||||||
"自动前进": "التلقائي إلى الأمام"
|
"自动前进": "التلقائي إلى الأمام",
|
||||||
|
"在新窗口中查词": "البحث عن الكلمات في نافذة جديدة"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32文字繪製函數鉤子",
|
"Win32文字绘制函数钩子": "Win32文字繪製函數鉤子",
|
||||||
"Win32字符串函数钩子": "Win32字串函數鉤子",
|
"Win32字符串函数钩子": "Win32字串函數鉤子",
|
||||||
"额外的钩子": "額外的鉤子",
|
"额外的钩子": "額外的鉤子",
|
||||||
"自动前进": "自動前進"
|
"自动前进": "自動前進",
|
||||||
|
"在新窗口中查词": "在新窗口中查詞"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 funkce kreslení textu",
|
"Win32文字绘制函数钩子": "Win32 funkce kreslení textu",
|
||||||
"Win32字符串函数钩子": "Win32 řetězcový funkční hák",
|
"Win32字符串函数钩子": "Win32 řetězcový funkční hák",
|
||||||
"额外的钩子": "Extra háčky",
|
"额外的钩子": "Extra háčky",
|
||||||
"自动前进": "Automaticky dopředu"
|
"自动前进": "Automaticky dopředu",
|
||||||
|
"在新窗口中查词": "Vyhledávání slov v novém okně"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 Text Zeichenfunktion Hook",
|
"Win32文字绘制函数钩子": "Win32 Text Zeichenfunktion Hook",
|
||||||
"Win32字符串函数钩子": "Win32 String Function Hook",
|
"Win32字符串函数钩子": "Win32 String Function Hook",
|
||||||
"额外的钩子": "Zusätzliche Haken",
|
"额外的钩子": "Zusätzliche Haken",
|
||||||
"自动前进": "Automatisch vorwärts"
|
"自动前进": "Automatisch vorwärts",
|
||||||
|
"在新窗口中查词": "Suche nach Wörtern in einem neuen Fenster"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 text drawing function hook",
|
"Win32文字绘制函数钩子": "Win32 text drawing function hook",
|
||||||
"Win32字符串函数钩子": "Win32 string function hook",
|
"Win32字符串函数钩子": "Win32 string function hook",
|
||||||
"额外的钩子": "Extra hooks",
|
"额外的钩子": "Extra hooks",
|
||||||
"自动前进": "Automatic Forward"
|
"自动前进": "Automatic Forward",
|
||||||
|
"在新窗口中查词": "Search for words in a new window"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Gancho de función de dibujo de texto Win32",
|
"Win32文字绘制函数钩子": "Gancho de función de dibujo de texto Win32",
|
||||||
"Win32字符串函数钩子": "Gancho de función de cadena Win32",
|
"Win32字符串函数钩子": "Gancho de función de cadena Win32",
|
||||||
"额外的钩子": "Ganchos adicionales",
|
"额外的钩子": "Ganchos adicionales",
|
||||||
"自动前进": "Avance automático"
|
"自动前进": "Avance automático",
|
||||||
|
"在新窗口中查词": "Buscar palabras en una nueva ventana"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 crochet de fonction de dessin de texte",
|
"Win32文字绘制函数钩子": "Win32 crochet de fonction de dessin de texte",
|
||||||
"Win32字符串函数钩子": "Crochet de fonction de chaîne Win32",
|
"Win32字符串函数钩子": "Crochet de fonction de chaîne Win32",
|
||||||
"额外的钩子": "Crochets supplémentaires",
|
"额外的钩子": "Crochets supplémentaires",
|
||||||
"自动前进": "Avance automatique"
|
"自动前进": "Avance automatique",
|
||||||
|
"在新窗口中查词": "Rechercher des mots dans une nouvelle fenêtre"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Gancio della funzione di disegno del testo Win32",
|
"Win32文字绘制函数钩子": "Gancio della funzione di disegno del testo Win32",
|
||||||
"Win32字符串函数钩子": "Aggancio della funzione stringa Win32",
|
"Win32字符串函数钩子": "Aggancio della funzione stringa Win32",
|
||||||
"额外的钩子": "Ganci supplementari",
|
"额外的钩子": "Ganci supplementari",
|
||||||
"自动前进": "Avanti automatico"
|
"自动前进": "Avanti automatico",
|
||||||
|
"在新窗口中查词": "Cerca parole in una nuova finestra"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win 32文字描画関数フック",
|
"Win32文字绘制函数钩子": "Win 32文字描画関数フック",
|
||||||
"Win32字符串函数钩子": "Win 32文字列関数フック",
|
"Win32字符串函数钩子": "Win 32文字列関数フック",
|
||||||
"额外的钩子": "エクストラフック",
|
"额外的钩子": "エクストラフック",
|
||||||
"自动前进": "自動前進"
|
"自动前进": "自動前進",
|
||||||
|
"在新窗口中查词": "新しいウィンドウで単語を調べる"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 텍스트 그리기 함수 갈고리",
|
"Win32文字绘制函数钩子": "Win32 텍스트 그리기 함수 갈고리",
|
||||||
"Win32字符串函数钩子": "Win32 문자열 함수 후크",
|
"Win32字符串函数钩子": "Win32 문자열 함수 후크",
|
||||||
"额外的钩子": "추가 갈고리",
|
"额外的钩子": "추가 갈고리",
|
||||||
"自动前进": "자동 전진"
|
"自动前进": "자동 전진",
|
||||||
|
"在新窗口中查词": "새 창에서 단어 찾기"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 teksttekenfunctiehook",
|
"Win32文字绘制函数钩子": "Win32 teksttekenfunctiehook",
|
||||||
"Win32字符串函数钩子": "Win32 tekenfunctiehook",
|
"Win32字符串函数钩子": "Win32 tekenfunctiehook",
|
||||||
"额外的钩子": "Extra haken",
|
"额外的钩子": "Extra haken",
|
||||||
"自动前进": "Automatisch voorwaarts"
|
"自动前进": "Automatisch voorwaarts",
|
||||||
|
"在新窗口中查词": "Zoeken naar woorden in een nieuw venster"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Hook funkcji rysowania tekstu Win32",
|
"Win32文字绘制函数钩子": "Hook funkcji rysowania tekstu Win32",
|
||||||
"Win32字符串函数钩子": "Hook funkcji ciągów Win32",
|
"Win32字符串函数钩子": "Hook funkcji ciągów Win32",
|
||||||
"额外的钩子": "Dodatkowe haki",
|
"额外的钩子": "Dodatkowe haki",
|
||||||
"自动前进": "Automatyczne naprzód"
|
"自动前进": "Automatyczne naprzód",
|
||||||
|
"在新窗口中查词": "Wyszukiwanie słów w nowym oknie"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Gancho de função de desenho de texto Win32",
|
"Win32文字绘制函数钩子": "Gancho de função de desenho de texto Win32",
|
||||||
"Win32字符串函数钩子": "Gancho de função de cadeia Win32",
|
"Win32字符串函数钩子": "Gancho de função de cadeia Win32",
|
||||||
"额外的钩子": "Ganchos extra",
|
"额外的钩子": "Ganchos extra",
|
||||||
"自动前进": "Avançar Automático"
|
"自动前进": "Avançar Automático",
|
||||||
|
"在新窗口中查词": "Procurar palavras numa nova janela"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 Графический крюк",
|
"Win32文字绘制函数钩子": "Win32 Графический крюк",
|
||||||
"Win32字符串函数钩子": "Win32 Строчный крюк",
|
"Win32字符串函数钩子": "Win32 Строчный крюк",
|
||||||
"额外的钩子": "Дополнительный крюк",
|
"额外的钩子": "Дополнительный крюк",
|
||||||
"自动前进": "Автоматическое продвижение вперед"
|
"自动前进": "Автоматическое продвижение вперед",
|
||||||
|
"在新窗口中查词": "Проверка слов в новом окне"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 textritfunktionskrok",
|
"Win32文字绘制函数钩子": "Win32 textritfunktionskrok",
|
||||||
"Win32字符串函数钩子": "Win32 strängfunktionskrok",
|
"Win32字符串函数钩子": "Win32 strängfunktionskrok",
|
||||||
"额外的钩子": "Extra krokar",
|
"额外的钩子": "Extra krokar",
|
||||||
"自动前进": "Automatisk framåt"
|
"自动前进": "Automatisk framåt",
|
||||||
|
"在新窗口中查词": "Sök efter ord i ett nytt fönster"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 วาดคำฟังก์ชันตะขอ",
|
"Win32文字绘制函数钩子": "Win32 วาดคำฟังก์ชันตะขอ",
|
||||||
"Win32字符串函数钩子": "Win32 ฟังก์ชั่นสตริงตะขอ",
|
"Win32字符串函数钩子": "Win32 ฟังก์ชั่นสตริงตะขอ",
|
||||||
"额外的钩子": "ตะขอเพิ่มเติม",
|
"额外的钩子": "ตะขอเพิ่มเติม",
|
||||||
"自动前进": "เดินหน้าอัตโนมัติ"
|
"自动前进": "เดินหน้าอัตโนมัติ",
|
||||||
|
"在新窗口中查词": "ค้นหาคำในหน้าต่างใหม่"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 metin çizim fonksiyonu çubuğu",
|
"Win32文字绘制函数钩子": "Win32 metin çizim fonksiyonu çubuğu",
|
||||||
"Win32字符串函数钩子": "Win32 string fonksiyonu",
|
"Win32字符串函数钩子": "Win32 string fonksiyonu",
|
||||||
"额外的钩子": "Ekstra hücreler",
|
"额外的钩子": "Ekstra hücreler",
|
||||||
"自动前进": "Otomatik İleri"
|
"自动前进": "Otomatik İleri",
|
||||||
|
"在新窗口中查词": "Yeni pencerede kelimeler arayın"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Хук функції малювання тексту Win32",
|
"Win32文字绘制函数钩子": "Хук функції малювання тексту Win32",
|
||||||
"Win32字符串函数钩子": "Хук функції рядка Win32",
|
"Win32字符串函数钩子": "Хук функції рядка Win32",
|
||||||
"额外的钩子": "Додаткові хаки",
|
"额外的钩子": "Додаткові хаки",
|
||||||
"自动前进": "Автоматично вперед"
|
"自动前进": "Автоматично вперед",
|
||||||
|
"在新窗口中查词": "Пошук слів у новому вікні"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "Win32 Chức năng vẽ văn bản Hook",
|
"Win32文字绘制函数钩子": "Win32 Chức năng vẽ văn bản Hook",
|
||||||
"Win32字符串函数钩子": "Win32 Chuỗi chức năng Hook",
|
"Win32字符串函数钩子": "Win32 Chuỗi chức năng Hook",
|
||||||
"额外的钩子": "Thêm móc",
|
"额外的钩子": "Thêm móc",
|
||||||
"自动前进": "Tự động chuyển tiếp"
|
"自动前进": "Tự động chuyển tiếp",
|
||||||
|
"在新窗口中查词": "Tra từ trong cửa sổ mới"
|
||||||
}
|
}
|
@ -793,5 +793,6 @@
|
|||||||
"Win32文字绘制函数钩子": "",
|
"Win32文字绘制函数钩子": "",
|
||||||
"Win32字符串函数钩子": "",
|
"Win32字符串函数钩子": "",
|
||||||
"额外的钩子": "",
|
"额外的钩子": "",
|
||||||
"自动前进": ""
|
"自动前进": "",
|
||||||
|
"在新窗口中查词": ""
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user