dima-pol » 30.01.2013 (Ср) 20:37
Конечная задача была - из проги на VB6 вставить данные в поля некоего спец.приложения (чужое). Причем вставить получилось быстро - с помощью WM_SETTEXT, но когда я увожу фокус с текстбокс - восстанавливается строе заначение!
Пришлось искать нужное сообщние, а поскольку у меня нет опыта работы с сообщениями, то я сначала их отрабатываю на своем текстбоксе. Сначала почему-то пришла мысль - убирать фокус с пом WM_KILLFOCUS или EN_KILLFOCUS, но с ними даже в VB6 не получилось.
Затем пробовал с EN_CHANGE, поскольку я сам часто сохраняю данные в своих прогах из Sub tb..._LostFocus() . Но в спец.приложении это не сработало.
Оказалось, что срабатывает, только если дать последовательно 3 обяз. сообщения: WM_SETFOCUS, WM_CHAR, WM_SETTEXT(необяз.) и WM_SETFOCUS на следущем техтбокс.
Т.о. решена только часть задачи, поскольку срабатывает - это значит, что становится активной кнопка Save(и Ctrl+s). Ctrl+s я пока делаю с пом. sendKeys. Но по опыту, sendKeys ненадежна штука и вроде медленнее чем сообщения (а у меня очень много данных), к тому-же спец.прога при этом как-то нервно пукает, как будто ей что-то не нравится (но данные сохраняет).
Т.о. эту тему наверно можно закрывать. Остается соседняя, про Ctrl+s.