2010-03-15 5 views
1

Voici un extrait d'un de mes scripts essayant de mettre de l'awesomeness Unicode supplémentaire au bout de mes doigts.Pourquoi ce script autohotkey ne parvient-il pas à conserver le contenu du presse-papier de manière cohérente?

::\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 
} 

Malheureusement, je devais commenter les lignes marquées ;;; parce qu'ils ont donné des résultats incohérents dans la préservation de contenu du presse-papiers. Le problème le plus fréquemment rencontré est le collage du contenu du presse-papiers existant au lieu de char.

Avez-vous des idées sur les raisons pour lesquelles ce qui précède et les solutions que je pourrais prendre pour résoudre le problème?

Répondre

2

Sous Windows, le presse-papiers peut contenir différents types de données. Lorsque vous collez, l'application vérifie les types de données disponibles et demande un ou plusieurs types, puis décide de l'utiliser. S'il existe déjà des données dans le Presse-papiers, AutoHotkey ajoute unicode au Presse-papiers sans l'effacer, puis l'application peut voir et demander les autres données à la place de l'Unicode.

Ce sont les formats standard du presse-papiers disponibles sur Windows: http://msdn.microsoft.com/en-us/library/ms649013(VS.85).aspx

Il est possible Autohotkey est coller avec le format CF_UNICODE et l'application demande des données de CF_TEXT périmées.

Vous devriez pouvoir utiliser la fonction Envoyer d'Autohotkey_L pour contourner les exigences du presse-papiers. http://www.autohotkey.net/~Lexikos/AutoHotkey_L/

Essayez le code dans ce post forum avec Autohotkey_L: http://www.autohotkey.com/forum/viewtopic.php?p=272379#272379