VB6 ActiveX exe теряет фокус при запуске из стороннего приложения

У меня есть VB6 ActiveX exe, который запускается из стороннего приложения CRM. При запуске открывается основная форма, но она начинает мигать, а затем теряет фокус. Если вы переместите форму, вы увидите экран занятости сервера с кнопками Перейти на, Повторить.

Я пробовал использовать SetFocus и SetFocusAPI в событии OnActivate формы, но это не сработало. Есть ли какие-нибудь предложения о том, как сфокусировать эту форму при запуске из другого приложения?

Дополнительная информация:

Событие OnLoad вызывает API SetWindowPos для центрирования приложения над вызывающим приложением и устанавливает HWND_TOPMOST.

Дополнительная информация:

  • Активное окно - это правильное окно (но оно явно не в фокусе)

  • Окно переднего плана - это вызывающее приложение. SetForegroundWindow переключает окно переднего плана, но немедленно возвращается обратно в вызывающее приложение. Только когда я нажимаю на форму, она оказывается на переднем плане. Я пытаюсь выполнить все это в цикле модуля, вызывающего форму (а не в вызывающем приложении).


person Clownish Carnage    schedule 17.09.2010    source источник
comment
РЕШЕНИЕ: Используйте Mouse_event, чтобы имитировать щелчок мышью по мигающей форме.   -  person Clownish Carnage    schedule 27.09.2010


Ответы (2)


Приложение CRM должно вызывать AllowSetForegroundWindow для " разрешить ActiveX ProcessID «украсть» фокус у текущего процесса.

person wqw    schedule 20.09.2010
comment
К сожалению, вызывающее приложение не поддерживает вызовы API. - person Clownish Carnage; 27.09.2010
comment
Без AllowSet ... нет законного способа изменить фокус на окно, которое принадлежит другому процессу в XP и выше. AllowSet ... сообщает ОС: «Он со мной. Относитесь к его окнам как к моим, что касается фокусировки '' - person wqw; 03.10.2010

Вы пробовали установить порядок табуляции в форме? Ваш пользовательский элемент управления должен иметь порядок табуляции 0, чтобы он получил фокус.

Кроме того, куда девается фокус после его запуска?

person bugtussle    schedule 17.09.2010
comment
Я не уверен, как установка порядка табуляции форм повлияет на фокус самой формы, однако порядок табуляции 0 установлен для фрейма, 1 - для метки рядом с текстовым полем и 2 - для текстового поля в этом фрейме. Я добавил дополнительную информацию выше. - person Clownish Carnage; 17.09.2010