|
Дочерние окна 1С. | ☑ | ||
---|---|---|---|---|
0
Raxla
28.09.11
✎
19:18
|
Получаю дочернее окно, но не могу получить название окна. Делаю так (упрощённо):
var s:String;l:integer; wnd := FindWindowEx(MAINMDIHANDLE, 0, 'V8MDIClient', nil); l:=SendMessage( wnd, WM_GETTEXT, 100, lparam( @ss[ 1 ] )); ss:=Copy( ss, 1, l ); (взятие текста бралось отсюда http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=624462&pg=-1) |
|||
1
Rie
28.09.11
✎
19:28
|
(0) Так а что получаешь? И кто такой ss?
|
|||
2
Rie
28.09.11
✎
19:29
|
+(1)
Попробуй var Buf: array [0..BUFSIZE] of char; и адрес Buf передать как lParam. |
|||
3
Raxla
28.09.11
✎
19:29
|
в l получаю ноль
|
|||
4
Raxla
28.09.11
✎
19:31
|
ss AnsiString, в вар не отпечаталось :)
|
|||
5
Rie
28.09.11
✎
19:31
|
(4) Попробуй (2).
|
|||
6
Rie
28.09.11
✎
19:34
|
+(5) Ты пытаешься баловаться с динамически выделенной под строку памятью. Это уже не хорошо.
|
|||
7
Raxla
28.09.11
✎
19:39
|
всё равно - мусор на выходе в буфере
|
|||
8
Raxla
28.09.11
✎
19:42
|
из 1С вообще можно получить названия окон?
|
|||
9
Raxla
28.09.11
✎
19:44
|
и в любом случае, длинну-то ноль возвращает!
|
|||
10
Rie
28.09.11
✎
19:49
|
(7) Посмотри при помощи Spy++ (или что там у тебя имеется), какие окна есть и что с ними. Может, ты не то окно смотришь?
|
|||
11
Raxla
28.09.11
✎
19:56
|
Пробовал все получать, по ClassName реально только это окно:
class: V8ViewSplitter class: V8ViewSplitter class: V8ViewSplitter class: V8ViewSplitter class: V8AutoHideLayouter class: V8AutoHideLayouter class: V8AutoHideLayouter class: V8AutoHideLayouter class: V8CommandBar class: V8CommandBar class: V8CommandBar class: V8CommandBar class: V8CommandBar class: V8Dockbar class: V8Dockbar class: V8Dockbar class: V8Dockbar class: V8CommandBar class: V8CommandBar class: V8MDIClient |
|||
12
Raxla
28.09.11
✎
19:57
|
Заголовок у него русским текстом.
|
|||
13
Rie
28.09.11
✎
19:58
|
(12) Unicode?
|
|||
14
Raxla
28.09.11
✎
20:51
|
В 1с вижу назавние на русском :-)
Если на выходе была бы не та кодировка, было бы видно, что атм не мусор, а через один символ. Возращаемая длинна не была бы равна нулю. У кого-нибудь в 1с8.1 названия дочерних окон читаются? |
|||
15
smaharbA
28.09.11
✎
20:59
|
читаются
|
|||
16
Raxla
28.09.11
✎
21:13
|
SPY++ показывает, что названия нету, а есть у подчинённого окну V8MDLocalFrame :-)
А в фрейме есть ещё V8Window, тоже без названия... Наплевать и забыть, или парсить подчинённые окна дальше? |
|||
17
orefkov
28.09.11
✎
21:46
|
Перебирай подчиненные окна, пока заголовок не найдешь.
Ну и ессесно, лучше заюзать юникодные версии апишных функций. |
|||
18
Raxla
28.09.11
✎
21:58
|
У меня вообще такое подзрение, что как окно будет отзываться только V8MDIClient, а всё остальное будет игнорить стандартные виндовые механизмы, по крайней мере, пока что у меня нулевой результат. Народ, киньте пример, чтения заголовков окон в 1С8.1
|
|||
19
Raxla
28.09.11
✎
22:03
|
А не, с локал фремами всё работает и коордиаты и заголовок
|
|||
20
H A D G E H O G s
28.09.11
✎
22:03
|
Я перебирал (но фактически искал) через
EnumChildWindows() FindWindowEx() у меня чето-не взлетел. |
|||
21
smaharbA
28.09.11
✎
22:04
|
нафиг не надо енумеровать, есть дедовский метод через некствиндов и рекурсию
|
|||
22
H A D G E H O G s
28.09.11
✎
22:07
|
(21) Почему не надо?
Это вы VBA-шники поди шугаетесь получения адреса функции, как черт ладана? |
|||
23
Raxla
28.09.11
✎
22:13
|
Кстати. окна вполне себе виндовые. обычный GetWindowText на этот локал фрейм прокатил, хотя для Child окон, как раз это совсем не гарантируется и говорят, что очень мало где работает. Нверное и регион можно дырявым сделать, и вообще поизвращатсья надо окнами :-)))
Надо будет попробовать, как время будет |
|||
24
smaharbA
28.09.11
✎
22:15
|
(22) нет, адресоф работает всюду, просто с рекурсией все прозрачнее
|
|||
25
H A D G E H O G s
28.09.11
✎
22:17
|
(23) Не знаю как насчет "дырявости", а вот порисовать тебе на контексте окна 1С ка не даст :-)
|
|||
26
H A D G E H O G s
28.09.11
✎
22:19
|
А вот прозрачность (альфа-канал) через SetWindowLong() вполне себе пожалуйста.
|
|||
27
smaharbA
28.09.11
✎
22:22
|
(26) и направление текста и меню
|
|||
28
Raxla
28.09.11
✎
22:23
|
То есть и вот это должно сработать: http://club.shelek.ru/viewart.php?id=181
Интересно, а сделать невидимой панель инструментов - сложно? (где хелп значёк остаётся) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |