#0
by HotShot
Написал внешнюю компоненту для 1с. Не получается достучаться до активного окна обработки, которая и юзает компоненту. Ищу хэндл след. образом (C#): Уже третий день бьюсь
#2
by HotShot
проблема в том, что во внешней компоненте подключена библиотека, в которой есть функция в параметрах которой передается хэндл тек. окна, а она выодит свою инормационную форму как чайлд. Указанным выше способом вроде получаю хэндл, передаю его функции, получаю исключение Неопознанная ошибка. Средствами шарпа по this.Handle все работает и форма открывается.
#3
by Rie
Если это внешняя компонента - то она может GetAppMDIFrame (из IExtWndsSupport). И дальше можно попробовать от него.
#8
by HotShot
Если это внешняя компонента - то она может GetAppMDIFrame (из IExtWndsSupport)... Вот с этого места поподробнее. IExtWndsSupport - что это?
#9
by HotShot
В вижуал студиях есть хороший тул Spy++... Да штука полезная. Вижу хэндлы, спасибо. Вот как программно все это добыть?
#11
by HotShot
может получить? а каким образам ее вынудить сделать это? вот: Init([MarshalAs(UnmanagedType.IDispatch)] object _Connection) public void Init([MarshalAs(UnmanagedType.IDispatch)] object p_Connection){ }
#13
by Rie
Нет, p_Connection - это IDispatch. Из него надо получить IExtWndsSupport, у которого уже есть метод GetAppMDIFrame.
#14
by H A D G E H O G s
Я вот счаст мозг сломал. GetAppMDIFrame возвращает тоже, что и GetAppMainFrame Наверное туплю.
#17
by H A D G E H O G s
1) EnumChildWindow от GetAppMainFrame 2) Остановиться, когда наткнемся на класс 'V8MDIClient' 3) Получим AppMDIFrameHandle 3) Найти активное окно обработки через GetWindow(AppMDIFrameHandle,GW_Child)
#20
by H A D G E H O G s
Я бы сделал так. function EnumChildProc(WND:Cardinal;Param:WORD):Boolean;STDCALL; var if UpperCase(String(Buffer))=UpperCase('V8MDIClient') then begin Result:=false; begin if AppMainFrameHandle<>0 then begin end;
#22
by HotShot
уяяяя... работает. спасибо большое. вопрос напоследок. в 1с тип Handle как то можно описать или это только средствами внешней компоненты?
#23
by HotShot
поясню. я в обработке вызываю функцию компоненты и получаю этот самый handle. в 1с это число. если я это число передаю в другую функцию компоненты, где требуется на вход handle, получаю исключение.
#24
by HotShot
такое очучение что компонениа не понимает что ей 1с дает. сори за не осведомленность.
#25
by H A D G E H O G s
В "другой" функции жди на входе число (Cardinal или Dword, как там у вас). И уже в ней преобразовывай в Handle ваш.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как программно закрыть Все окрытые окна в пределах окна 1С?
- Как отключить в Excel автоматическое определение типа ячейки?
- Определение текущей строки в табличной части документа
- RDP модальные окна, окна настройки "прячутся"
- Подключение внешней компоненты из макета внешней обработки в толстом клиенте
- Определение программно выбранной закладки (станицы)
- RDP модальные окна, окна настройки "прячутся"
В этой группе 1С
- Перепроведение документов после обмена 1c 8
- Получить значение по ссылке справочника
- Bitrix или Joomla что выбрать для разработки сайта?
- Интеграция беспроводного сканера штрих-кода PROTON IMS 3190 c 1C
- Очень тупой админ (женщина лет 20) Как бороться?
- РегистрыСведений.КонтактнаяИнформация. Адрес за пределами. УПП. Добавить программно.
- Как остановить работу SQL Profiler
- Неправильно распарсивается дата, в запросе через 1с++
- Как ИспользоватьСвойстваИКатегории в своем отчете?
- Удаление Старые Данных из таблицы в SQL Server2005
- Помогите правильно ОткрытьФорму
- Вопрос по XDTO и выгрузке из 1С 7.7 в xml
- 1cv82. Полуторный интервал в макете (Табличном документе)
- Передать параметр в «Вычисляемое поле», в СКД! Как?
- проверка на отсутствие значения в результате запроса
- Как в запросе подсчитать количество записей?
- Анализ конфигурации
- Методичка для начинающих программированию 1с 8.
- Как установить цвет "Авто"
- КУДиР и платежный ордер - услуги банка