Используя VBA, я не могу заставить функцию MsgBox открыть диалоговое окно с фокусом под Windows 10.
Я использую VBA 6 (Sax ActiveX Scripting Control, © 1993-2006, Polar Engineering), чтобынаписать команды для программного обеспечения распознавания речи Dragon. Эти «команды» представляют собой небольшие программы, запускаемые конкретными устными высказываниями. Я наблюдал проблему, описанную ниже, буквально в сотнях компьютерных установок.
Команды написаны внутри и выполняются из приложения Dragon. Я написал несколько сотен команд, которые включают функцию MsgBox. В Windows XP диалоговые окна, созданные с помощью MsgBox, работали правильно. Однако в Windows 7 такие поля не получают фокус (не отображаются на переднем плане);вместо этого они остаются «запертыми» на панели задач. В Windows 7 простое изменение записей реестра ForegroundFlashCount и ForegroundLockTimeout (HKEY_CURRENT_USER \ Control Panel \ Desktop) решает проблему.
В Windows 10, однако, рассмотренный выше взлом реестра не решает проблему. Насколько я понимаю, вызов MsgBox по умолчанию в Windows 7 и Windows 10 может быть предоставлен только в том случае, если он выполняется из программы, которая имеет фокус. Однако, поскольку Dragon по сути работает в фоновом режиме, он никогда не фокусируется.
Я заметил, что аргумент кнопки MsgBox vbSystemModal выдает диалоговое окно на экран, но без фокуса. Следовательно, это не решает проблему. vbMsgBoxSetForeground ничего не делает.
Похоже, что созданные мной диалоговые окна (не использующие MsgBox) обычно получают фокус в вышеописанном сценарии. Однако для меня было бы чрезвычайно трудоемким переписать сотни таких диалоговых окон.
Кто-нибудь знает об исправлении / взломе или есть какие-либо предложения?
Спасибо.