2010-03-15 4 views
1

Вот фрагмент моего сценария, который пытается добавить дополнительную удивительность Юникода у меня под рукой.Почему этот скрипт authotkey не может постоянно сохранять содержимое буфера обмена?

::\iff:: 
    SendUnicode("⇔") 
    return 

; many rules later... 

SendUnicode(char){ 
    ClipSaved := ClipboardAll ;;; 
    ;apparently this is the only way AHK can handle Unicode. 
    Transform, Clipboard, Unicode, %char% 
    SendInput ^v 
    Clipboard := ClipSaved ;;; 
    return 
} 

К сожалению, мне пришлось закомментировать строки, отмеченные ;;;, потому что они дали противоречивые результаты в сохранении содержимого буфера обмена. Наиболее часто возникала проблема, связанная с вставкой существующего содержимого буфера обмена, а не char.

Любые идеи о том, почему вышеизложенное не удается и какие средства защиты я могу предпринять, чтобы исправить проблему?

ответ

2

В Windows буфер обмена может хранить различные данные. При вставке приложение проверяет, какие типы данных доступны и запрашивает один или несколько типов, а затем решает, как его использовать. Если в буфере обмена уже есть данные, а AutoHotkey добавляет unicode в буфер обмена, не очищая его, приложение может видеть и запрашивать другие данные вместо юникода.

Это стандартные форматы буфера обмена, доступные на Windows: http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx

Это возможно AutoHotKey будет наклеивать с форматом CF_UNICODE и приложение запрашивает устаревшие данные CF_TEXT.

Вы должны использовать функцию отправки функции Autohotkey_L для обхода требования буфера обмена. http://www.autohotkey.net/~Lexikos/AutoHotkey_L/

Попробуйте код в этом сообщении на форуме с Autohotkey_L: http://www.autohotkey.com/forum/viewtopic.php?p=272379#272379

 Смежные вопросы

  • Нет связанных вопросов^_^