#3
by romix
Ну можно по заголовку искать окно, по классу, а можно дерево подчиненных окон проанализировать относительно известного окна (там несколько ф-й WinAPI не очень сложных). В составе VC++ есть утилитка SPYXX.exe которая позволяет демонстрировать имя класса, текст окна, какие там идут сообщения. Чтобы ей воспользоваться надо нажать на пимпочку Поиск, там есть фишка типа прицела (кружок с крестиком), его перетащить мышью на нужное окно, и программа отобразит сведения по окну.
#4
by Hadgehogs
Как учил Конфуций - есть 3 пути: подражание - самый легкий, ошибок - самый болезненный, размышления - самый благородный.
#6
by Hadgehogs
GetWindowThreadProcessId(WND,@PID); if PID=GetCurrentProcessId then begin GetClassName(WND,@Buffer,255); if UpperCase(String(Buffer))='V8TOPLEVELFRAME' then begin Result:=false;
#7
by Hadgehogs
Благородный: function GetAppMainFrame(var hwnd: HWND): HResult; stdcall; function GetAppMDIFrame(var hwnd: HWND): HResult; stdcall; function CreateAddInWindow(const bstrProgID: WideString; const bstrWindowName: WideString; Flags: Integer; var pHwnd: HWND; var pDisp: IDispatch): HResult; stdcall; end; function AddInWindows.CallAsFunc(lMethodNum: Integer; var pvarRetValue: OleVariant; var paParams: PSafeArray): HResult; stdcall; begin if MAINHANDLE=0 then begin
#8
by Hadgehogs
Только в C# как не скажу. И не забывайте, что ОКНО доступно только в ПриНачалеРаботыСистемы но не раньше. Удачи, сегун.
#9
by MTM777
Спасибо Romix, Hadgehogs за советы! Про SpyXXX я знаю, юзал както.. Только я пока не въеду как на форме (главной, которую я уже отловил) находить нужные мне элементы (поле ввода и все такое). Щас стоит задача отлавливать попадание фокуса на элемент формы, узнать его )), а потом переключить расскладку клавы на нужную. Был бы рад если чего нить подсказал. Ну дык я с самого начала попыткался в благородство играть..)) тока не получилось перевести дельфийский код в шарповский. Вот и пришлось сделать через подражание..)) Спасибо еще раз!
#15
by MTM777
к вопросу, который я Romix-у задал - щас смотрю через Spy++, у всех элементов формы класс назыввается "V8FormElement", а вот теперь как их ФИО узнать ? вот в чем вопрос... а потом еще нужно отловить попадание на него фокуса..
#16
by MTM777
+ надо наверное какой нить глобальный хук на главную форму наложить, там и отслеживать фокус.., но как..?
#22
by TormozIT
Друзья, буду очень благодарен, если кто то напишет мне компоненту для получения координат курсора в поле текстового документа отностельно левого верхнего угла главного окна приложения(!) Это нужно мне для более удобного позиционирования окно контекстной подсказки. Сразу скажу, что задача довольно непростая, но может кто то сумеет таки.
#23
by AmoreMe
На С++ (MFC) или WinAPI это решается очень просто... Думаю на С# не сложней скорее ещё проще!Получаем описатель окна, получаем координаты клиентской области,определяем попадает ли щелчок правой кнопки мышки (отпускание) в область... Если да выводим контекстное меню (или передаем управление 1С). Кстати контролы на форме такие же окна (дочерние) с ними все что угодно творить можно имея описатель окна.
#24
by MTM777
как только, так сразу! но пока не скоро..)) в теории вроде бы все понятно, осталось тока сделать..))
#25
by AmoreMe
Можно DLL написать и загружать её в адресное пространство процесса 1С ("Известные DLL"), функции экспортируемые из этой DLL могут выполнять всю работу т.к. разделят одно адресное пространство с процессом 1С
#26
by romix
>если не затруднит, пример на любом языке. * vk_windows.rar (90K) - Внешняя компонента для работы с окнами Windows. Там есть методы: ( ('FindWindow','НайтиОкно','1'), цифра - число параметров метода.
#35
by TormozIT
К сожалению, сдается мне, что задачка трудно решаема без глубокого изучения внутренней жизни 1с8 окон
#37
by Hadgehogs
Немного не понятно уточнение "отностельно левого верхнего угла главного окна приложения(!) " Как будто действительно для курсора мыша, а не клавиатуры...
#38
by Hadgehogs
Не, чегото лом. Я лучше парню из соседней ветки калькулятор в 1С помогу написать :-)
#39
by TormozIT
Ну есть у меня поле текстового документа. В нем есть скроллбары. Я куда то их подвигал и вижу курсор в тексте. Теперь юзер жмет CTRL+SPACE. Мне нужно открыть форму с подсказкой чуть ниже места на экране, где собственно находится текстовый курсор.
#44
by TormozIT
Спасибо. Но в обработке "Работа с клавиатурой" все работает с элементом управления "ПолеВвода", а мне "ПолеТекстовогоДокумента" нужно.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- V8 внешняя обработка.ПолучитьМакет
- Внешняя компонента SysFTP для 1С 7.7
- Внешняя компонента на С++
- Создание окна (внешняя компонента)
- Внешняя обработка. ПолучитьМакет("Макет1")
- Внешняя компонента.
- Нужнна внешняя компонента с исходником на C#
- Внешняя печатная форма
- внешняя печатная форма М-4 для 1с8
- Внешняя компонента на c#
- Внешняя компонента для 1с 8.2 на C#
В этой группе 1С
- Не могу восстановить базу с дифф. отката
- недопустимое состояние курсора
- РБП. Как Бухию 1.6 заставить не списывать в НУ ежемесячно?
- Для получения итогов по данному периоду требуется временный расчет!
- Как в УПП сделать чтобы в списке документов,пользовател видел только свою о
- v7: Возврат от покупателя(комиссия)
- Убыток прошлых лет от продажи ОС в декларации на прибыль?
- Можно ли выгрузить номенклатур стандартными средствами
- Выпущен релиз 7.70.483 Комплексной конфигурации (ред. 4.5) "Бухгалтерия + Т
- Заполнение поля списка справочника из регистра сведений
- Префикс для кода регистра сведений
- "1с:Центр управления производительностью" можно скачать?
- Зафиксировать определенную строку табличной части
- Как узнать на каком компьютере установлен сервер "1С Подрядчик строительств
- v8: КД: как заставить событие "После загрузки Правил Обмена" работать в 77
- ЗиК Изменение оклада в середине месяца
- Нарисовал обработку для использования веб-сервисов XMLRPC из 1С8
- Не сохраняется и не закрывается документ
- Как перейти с базовой версии на Проф
- ЗапуститьПриложение() зависает система после закрытия приложения