VB6 ActiveX exe теряет фокус при запуске из стороннего приложения - PullRequest
0 голосов
/ 17 сентября 2010

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 20 сентября 2010

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

0 голосов
/ 17 сентября 2010

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

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

...