Страница: 1 |
Страница: 1 |
Вопрос: Перечисление ВСЕХ окон
Добавлено: 24.07.07 01:20
Автор вопроса: Neco | Web-сайт:
Вкратце задача: есть SAP, надо из него извлекать отчёты. Автоматически. Своего у Сапа вроде ничего нет (если есть - хээээлп). Пробовали AutoIT (эмулятор нажатия клавиш) - нестабильно и ненадёжно.
Начал писать своё (хотел через SetText и SendMessage эмулировать события - чтобы не зависеть от текущего фокуса) - пришла беда откуда не ждал. Не все окна перечисляются.
Написал стандартную (в моём понимании) штуку:
1. GetDesktopWindow
2.
FuncEnumAllWindow(hwnd){
hwnd=getwindow(hwnd,gw_first);
while (hwnd>0){
FuncEnumAllWindow(hwnd);
hwnd=getwindow(hwnd,gw_next);
}
}
Остаются неперебранными внутренности саповских окон (текстбоксы и прочее, что находится на самой форме) - проверялся Spy++ - он выдаёт тоже что и моё.
Сап - штука явовская. Возможно ли такое, что там объекты рисуются без создания окон? Если да, то что можете посоветовать для моего случая?
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #1
Добавлено: 24.07.07 01:36
Все можно нарисовать без окон, ИМХО у тебя не тот случай.
1. Найди название класса окна SAP (через SPY++)
2. Через FindWindow получи hWnd этого окна.
3. Перебор дочерних окон либо FindWindowEx либо EnumChildWindows
Если использовать GetDesktopWindow & GetWindow, то после нахождения "формы", нужен еще один перебор, но уже с добавлением флага GW_CHILD
Номер ответа: 2
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #2
Добавлено: 24.07.07 11:06
спай кажись ищет все окна. если не светит он, не поможет никто. можешь попробовать посмотреть через отладчик(OllyDbg) что джавная прога делает