Имя: Пароль:
1C
1С v8
Как прочитать IME поле из окна 1С:Предприятие 8 (тонкий клиент)?
,
0 Oftan_Idy
 
13.11.12
12:34
Есть приложение 1С:Предприятие 8 в режиме тонкого клиента. В окне есть элемент управления "дерево".
Нужно с помощью WinApi (или каким-то другим образом) прочитать ветку (строка) в этом дереве.Есть handle этого элемента управления.
Первым делом попытался прочитать обычными WinApi — не получилось,потому что это не обычное окно, а "IME" (Input Method Editor), который используется для ввода не латинских символов (иероглифы и т.д)
C помощью Spy++ поймал сообщения, которые ловит этот элемент управления.События типа:
WM_IME_SETCONTEXT fset:0 (LONG)iShow:C000000F
WM_IME_NOTIFY dwCommand:00000001 dwData:00000000
WM_IME_NOTIFY
WM_IME_SETCONTEXT

Подскажите каким образом можно подобраться к тексту элемента управления. Я знаю про все возможности связаться с 1С:Предприятие штатными методами,но в данном случае они подходят. Нужно мучить именно окно через handle
1 Oftan_Idy
 
13.11.12
12:36
Вроде "H A D G E H O G s" шарит в WinApi, может подскажешь?
2 H A D G E H O G s
 
13.11.12
12:37
Элементы управления 1С не содержат текст.
3 H A D G E H O G s
 
13.11.12
12:39
Это типовые элементы Винды, но служат только для приема событий от клавы/мыша. Отрисовка перехватывается и выполняется 1С-кой.

Это насколько я понял.
Это было в 8.1, толстом клиенте.
Это было для СлужебныхСообщений и элементов форм.
4 Oftan_Idy
 
13.11.12
12:43
Да элемент текст напрямую не содержит. Но хочется как-то добраться до него.
Если бы это был просто элемент винды, то через WinApi можно было легко прочитать текст, послать сообщение на получение текста.
5 H A D G E H O G s
 
13.11.12
12:44
(4) Внимательно прочитай, что я написал выше.
6 Oftan_Idy
 
13.11.12
12:44
Неужели остается только получать hDc, делать сриншот элемента и распознавать картинку? Это уже совсем хардкор.
7 H A D G E H O G s
 
13.11.12
12:46
(6) Вообще - то, что ты хочешь - скорее всего - незаконно.
8 Oftan_Idy
 
13.11.12
13:27
(7) Почему? Я же не меняю ничего в сторонней программе. Хочу прочитать с помощью стандартный WinApi функций. Получается винда сама дает читать и управлять другими окнами, полчать nandle,отправлять сообщения, вещать хуки - разве это все незаконно?
Хочешь сказать что это троян?
9 H A D G E H O G s
 
13.11.12
13:37
(8) Ммммм, ну вот вешать хуки - возможно.
А вот создать удаленный поток в процессе 1С - уже скорее всего нельзя.
10 Oftan_Idy
 
13.11.12
13:44
Я могу послать в элемент управления сообщения нажатий, мыши и т.д,но это не поможет потому что мне нужно не повлиять на элемент (что-бы там что-то произошло) а прочитать его состояние.
11 H A D G E H O G s
 
13.11.12
14:08
(10) Никак.
12 Oftan_Idy
 
13.11.12
14:44
Печалька. Прийдется распозновать картинку.
Зачем 1С понадобилось так извращаться, чем не подошли стандартные виндовс элементы управления с расширением класса.
Взяли бы класс элеменет, наследовали бы его, и переписали ыункции отрисовки и реагирования, но оставим базовые функционал чтобы WinApi могли с ними взимодействовать.
13 H A D G E H O G s
 
13.11.12
14:54
(12) Говорят, были проблемы с разрешением экрана, но это - на уровне слухов.
14 Gepard
 
13.11.12
15:30
(0) а зачем? (может быть есть другой путь)
15 Oftan_Idy
 
13.11.12
15:45
(14) К сожалению другого пути нет. Законнектиться к базе нельзя никак, только тонким клиентом
16 H A D G E H O G s
 
13.11.12
15:45
(15) Законнектся к Тонкому!
17 Oftan_Idy
 
13.11.12
16:26
(16) Неправильно написал. Можно подключиться пользователем к тонкому клиенту, но нельзя законектиться к тонкому Com соединением (нет прав на коннект)
18 Gepard
 
13.11.12
17:44
(17) а добавить прав?
19 Gepard
 
13.11.12
17:44
(18) + или web-сервис