По поводу Процедура не обнаружена: ОбработкаВнешнегоСобытия/ExternEventProcessing решить можно переходом окна формы в активное (типа на передний план) Причем та же ошибка будет если в окне сообщений установлен курсор даже при окне на переднем плане Если закрывать плавающее окно то можно предварительно получив его хендл после разрушить
Все делалось на Win32Api Процедура ПослеОткрытия() // получаем хэндл окна Попытка Wrap = CreateObject("DynamicWrapper"); Wrap.Register("USER32.DLL", "GetForegroundWindow", "f=s", "r=l"); Wrap.Register("USER32.DLL", "GetWindow", "i=ll","f=s", "r=l"); Wrap.Register("USER32.DLL", "BringWindowToTop", "i=l", "f=s", "r=l"); Wrap.Register("USER32.DLL", "FindWindow", "i=rr", "f=s", "r=l"); Wrap.Register("USER32.DLL", "DestroyWindow", "i=l", "f=s", "r=l"); HWND = Wrap.GetForegroundWindow(); HWND = Wrap.GetWindow(HWND,5); HWND = Wrap.GetWindow(HWND,5); Исключение HWND = 0; Wrap = 0; КонецПопытки;
// перед отработкой внешнего события Если HWND>0 Тогда HWNDPrev = Wrap.BringWindowToTop(HWND); КонецЕсли; // для плавающих окон HWND1 = Wrap.FindWindow(КлассОкна,""); Wrap.DestroyWindow(HWND1);
Есть способ попроще Обработку внешнего события также прописать в глобальнике и по событию открывать форму
|