Тема: AHK: Send Unicode
Привет народ.
Есть такая задача, заставить выводить unicode символы, пример - https://emojipedia.org/money-with-wings/
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Привет народ.
Есть такая задача, заставить выводить unicode символы, пример - https://emojipedia.org/money-with-wings/
Можно через буфер обмена:
symHex := { MoneyWithWings: "D83DDCB8"
, Dizzy: "D83DDCAB"
, Flag: "D83DDEA9" }
$F1::
if SetUnicodeFromHexToClipboard(symHex.MoneyWithWings)
Send, ^{vk56}
Return
$F2::
if SetUnicodeFromHexToClipboard(symHex.Dizzy)
Send, ^{vk56}
Return
$F3::
if SetUnicodeFromHexToClipboard(symHex.Flag)
Send, ^{vk56}
Return
SetUnicodeFromHexToClipboard(hex) {
static GMEM_ZEROINIT := 0x40, GMEM_MOVEABLE := 0x2, CF_UNICODETEXT := 13
if mod(StrLen(hex), 4) || RegExMatch(hex, "i)[^\dA-F]") {
MsgBox, Wrong hex!
Return
}
if !DllCall("OpenClipboard", Ptr, A_ScriptHwnd) {
MsgBox, Failed to open Clipboard!
Return
}
DllCall("EmptyClipboard")
hMem := DllCall("GlobalAlloc", UInt, GMEM_ZEROINIT|GMEM_MOVEABLE, Ptr, StrLen(hex)//2 + 2, Ptr)
pMem := DllCall("GlobalLock", Ptr, hMem, Ptr)
while str := SubStr(hex, 1 + (A_Index - 1)*4, 4)
NumPut("0x" . str, pMem + (A_Index - 1)*2, "UShort")
DllCall("GlobalUnlock", Ptr, hMem)
res := DllCall("SetClipboardData", UInt, CF_UNICODETEXT, Ptr, hMem, Ptr)
DllCall("CloseClipboard")
if !res {
MsgBox, Failed to set data to Clipboard!
Return
}
Return true
}
Был уверен, что какой-то простой способ есть, но не вспонил.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться