Страница: 1 |
Страница: 1 |
Вопрос: Как заполнить из VB-проги Edit другого приложения?
Добавлено: 19.12.07 11:16
Автор вопроса: Dan
Подскажите, пожалуйста, как из Vb.net-приложения программно заполнять Edit другого приложения.
Цель такая: из Vb.net-приложения нужно запускать выполняемый файл (*.exe) и в нем заполнить edit'ы и нажимать кнопки программно.
С запуском другого приложения из своей программы разобрался, а вот как заполнить эдиты другой программы пока неосилил. Подскажите, плиз.
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #1
Добавлено: 19.12.07 13:28
API:
FindWindow
GetWindow(ParentWindow,GW_CHILD)
SetWindowText
есть и другие способы.
Номер ответа: 2
Автор ответа:
Dan
Вопросов: 1
Ответов: 5
Профиль | | #2
Добавлено: 19.12.07 18:16
спасибо, а не подскажите как без API? Только средствами Vb.net
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 19.12.07 23:50
)) Ааа.. ты думаю в дотнете есть готовые класс, типа
System.Window.Заполнить_текстбокс_другой_порги (имя_проги, имя_текстбокса, текст)
А они не сделали всё за тебя? )) Видишь как MS заботится о своих клиентах. Получается что от Executioner'a больше пользы для тебя чем от говнокомпании MS
Номер ответа: 4
Автор ответа:
Dan
Вопросов: 1
Ответов: 5
Профиль | | #4
Добавлено: 21.12.07 18:28
Вроде получилось, но не до конца. Нужна помощь.
На чужой программе, есть два edit'a пустых.
Вот с помощью FindWindow нахожу handle окна.
Потом с помощью FindWindowEx нахожу один Edit и заполняю его нужным мне текстом.
А вот ко второму не получается, все время получаю handle одного эдита (класс-предок у двух edit'ов один - TTabSheet)
Подскажите, с помощью какой фунции можно перебрать все имеющие edit'ы.
Пробовал следующим образом. Находил с помощью FindWindowEx(h,0,"TEdit", vbNullString) один-записывал туда данные (MessageSend Handle,0,WM_SETTEXT,0,"text)", все записывает нормально. а потом искал снова Пустой эдит. Все равно находит уже найденный эдит. Как добратся к другому эдиту, подскажите функцию какуе-то, плиз.
Номер ответа: 5
Автор ответа:
Dan
Вопросов: 1
Ответов: 5
Профиль | | #5
Добавлено: 21.12.07 18:28
Вроде получилось, но не до конца. Нужна помощь.
На чужой программе, есть два edit'a пустых.
Вот с помощью FindWindow нахожу handle окна.
Потом с помощью FindWindowEx нахожу один Edit и заполняю его нужным мне текстом.
А вот ко второму не получается, все время получаю handle одного эдита (класс-предок у двух edit'ов один - TTabSheet)
Подскажите, с помощью какой фунции можно перебрать все имеющие edit'ы.
Пробовал следующим образом. Находил с помощью FindWindowEx(h,0,"TEdit", vbNullString) один-записывал туда данные (MessageSend Handle,0,WM_SETTEXT,0,"text)", все записывает нормально. а потом искал снова Пустой эдит. Все равно находит уже найденный эдит. Как добратся к другому эдиту, подскажите функцию какуе-то, плиз.
Номер ответа: 6
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #6
Добавлено: 21.12.07 18:34
ну дык перебирай все дочерние окна Таба с помощью GetWindow
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 21.12.07 21:22
EnumChindWindow?
Номер ответа: 8
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #8
Добавлено: 21.12.07 21:56
ну или EnumChindWindow. но, ИМХО, GetWindow(ParentWindow,GW_CHILD) проще, чем писать лишний CallBack)
Номер ответа: 9
Автор ответа:
Dan
Вопросов: 1
Ответов: 5
Профиль | | #9
Добавлено: 24.12.07 11:10
Всем, спасибо! Все получилось!
Номер ответа: 10
Автор ответа:
Сергей
Вопросов: 9
Ответов: 18
Профиль | | #10
Добавлено: 24.12.07 13:44
Схожая проблемма http://bbs.vbstreets.ru/viewtopic.php?t=35330