AutoHotKey не працює з Outlook 2010


13

Я створив сценарій AutoHotKey і компілював його в exe.

Потім я запустив exe і запустив Outlook 2010.

Коли я намагаюся використовувати свої гарячі клавіші, я визначив, що в рядку стану з’являється помилка із записом «Ця зміна заборонена, оскільки вибір заблокований».

Я провів кілька досліджень, і шви помилок повинні бути пов'язані разом із закінченням сліду. Але я за робочим комп’ютером і не проходжу проби.

Чи є спосіб це виправити?

ось мій файл ах

SendMode Input ; Recommended for new scripts due to its superior speed and reliability.

SendMode Input ; superior speed and reliability.

SetTitleMatchMode 2 ;allow partial match to window titles

;********************
;Hotkeys for Outlook 2010
;********************
;As best I can tell, the window text ‘NUIDocumentWindow’ is not present
;on any other items except the main window. Also, I look for the phrase
; ‘ – Microsoft Outlook’ in the title, which will not appear in the title (unless
;a user types this string into the subject of a message or task).
#IfWinActive – Microsoft Outlook ahk_class rctrl_renwnd32, NUIDocumentWindow

y::HandleOutlookKeys("!hy", "y") ;calls archive macro
f::HandleOutlookKeys("^f", "f") ;forwards message
r::HandleOutlookKeys("^r", "r") ;replies to message
a::HandleOutlookKeys("^+r", "a") ;reply all
v::HandleOutlookKeys("^+v", "v") ;Move message box
+u::HandleOutlookKeys("^u", "+u") ;marks messages as unread
+i::HandleOutlookKeys("^q", "+i") ;marks messages as read (^q is read/unread toggle)
j::HandleOutlookKeys("{Down}", "j") ;move down in list
+j::HandleOutlookKeys("{Down}{Enter}", "+j") ;move down and select next item
k::HandleOutlookKeys("{Up}", "k") ;move up
+k::HandleOutlookKeys("{Up}{Enter}", "+k") ;move up and select next item
o::HandleOutlookKeys("^o", "o") ;open message
s::HandleOutlookKeys("{Insert}", "s") ;toggle flag (star)
c::HandleOutlookKeys("^n", "c") ;new message
/::HandleOutlookKeys("^e", "/") ;focus search box
.::HandleOutlookKeys("+{F10}", ".") ;Display context menu

#IfWinActive
;Passes Outlook a special key combination for custom keystrokes or normal key value, depending on context
HandleOutlookKeys( specialKey, normalKey ) {
    ;Activates key only on main outlook window, not messages, tasks, contacts, etc.
    IfWinActive, – Microsoft Outlook ahk_class rctrl_renwnd32, NUIDocumentWindow, ,
    {
        ;Find out which control in Outlook has focus
        ControlGetFocus, currentCtrl
        ;MsgBox, Control with focus = %currentCtrl%
        ;set list of controls that should respond to specialKey. Controls are the list of emails and the main (and minor) controls of the reading pane, including controls when viewing certain attachments.
        ;Currently I handle archiving when viewing attachments of Word, Excel, Powerpoint, Text, jpgs, pdfs
        ;The control ‘RichEdit20WPT1' (email subject line) is used extensively for inline editing. Thus it had to be removed. If an email’s subject has focus, it won’t archive…
        ctrlList = Acrobat Preview Window1, AfxWndW5, AfxWndW6, EXCEL71, MsoCommandBar1, OlkPicturePreviewer1, paneClassDC1, RichEdit20WPT2, RichEdit20WPT4, RichEdit20WPT5, RICHEDIT50W1, SUPERGRID1, SUPERGRID2, _WwG1
        if currentCtrl in %ctrlList%
        {
            Send %specialKey%
            ;Allow typing normalKey somewhere else in the main Outlook window. (Like the search field or the folder pane.)
        } else {
            Send %normalKey%
        }
        ;Allow typing normalKey in another window type within Outlook, like a mail message, task, appointment, etc.
        } else {
            Send %normalKey%
    }
}

Ще одна пропозиція полягає в тому, що це може статися, якщо документ захищений. Я не знаю, чи це актуально, але може дати вам маршрут для дослідження?
Стюарт Маклафлін

Чому "SendMode Input;" рядок двічі? Це навмисно чи це просто помилка копіювання та вставки?
sbtkd85

Чи це не пов’язано з посиленою безпекою, яку Microsoft ввела в Outlook у 2003 році?

Я продовжую спотикатися над цим питанням, і тут щоразу виникає одна річ, що мені спадає на думку: чому б на землі не задати це питання на форумі AutoHotkey? Існує величезна експертиза для подібних проблем.
користувач 99572 прекрасно

Ви перевірили, щоб Outlook був активований? Ви можете перевірити це, перейшовши до Файл-> Довідка.
cmorse

Відповіді:


1

Я не отримав вашої помилки, але виявив одну можливу точку відмови та дві інші речі. Можливо, виправити ці або принаймні пограти з параметрами.

Контрольний список з відповідними елементами управління

ctrlList = Acrobat Preview Window1,AfxWndW5,AfxWndW6,EXCEL71,MsoCommandBar1,OlkPicturePreviewer1,paneClassDC1,RichEdit20WPT2,RichEdit20WPT4,RichEdit20WPT5,RICHEDIT50W1,SUPERGRID1,SUPERGRID2,_WwG1

Я видалив усі пробіли, посилаючись на відповідний документ Autohotkey:

Список рядків, розділених комами, кожен з яких буде порівнюватися зі змістом Var для відповідності. Будь-які пробіли чи вкладки навколо розділюючих коми значущі, тобто вони є частиною рядка відповідності. Наприклад, якщо для MatchList встановлено значення ABC, XYZ, тоді Var повинен містити або ABC з проміжним пробілом, або XYZ з провідним пробілом, щоб викликати збіг.

Визначення вікон

#IfWinActive - Microsoft Outlook ahk_class rctrl_renwnd32

Річ "NUIDocumentWindow" не відображається, коли я запускаю вікно-шпигуна. Те саме стосується відповідного рядка в функції передачі ключа:

IfWinActive, - Microsoft Outlook ahk_class rctrl_renwnd32
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.