Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > перенос данных из однойпроги в другую |
Автор: shuttle 19.5.2009, 05:49 |
Есть две проги из себя в основном представляют несколько диалоговых окон. Как из диалогово окно одной проги перенести данные в диалоговое окно другой проги. т.е. надо из текстовых полей диалогового окна одно пролги перенести данные в текстовые поля другой проги. Исходников разумеется нет. Какой функцией можо получить доступ к данным диалогового окна (текстовым полям, check box-ам, radio button-ам)? |
Автор: azesmcar 19.5.2009, 08:35 | ||
FindWindowEx |
Автор: Andrey44 19.5.2009, 08:37 |
azesmcar, ну-у-у можно еще использовать EnumChildWindows() ![]() |
Автор: azesmcar 19.5.2009, 08:40 |
Вообще-то эти две функции разные задачи решают. Одна для поиска, другая для итерации. Смотря что нужно ![]() |
Автор: Andrey44 19.5.2009, 08:47 | ||
Через FindWindow() находим главное окно, а потом через EnumChildWindows() перебираем все дочерние. ![]() |
Автор: shuttle 20.5.2009, 05:46 |
FindWindow() только HWND возвращает, а GetWindowText только заголовок. А как остальные данные получить? |
Автор: Andrey44 20.5.2009, 07:58 | ||
Ну не хочется через GetWindowText тогда посылай эдиту сообщение WM_GETTEXT и получай текст Не хочется через SetWindowText тогда посылай эдиту сообщение WM_SETTEXT и устанавливай новый текст |
Автор: shuttle 21.5.2009, 08:09 |
Смотрел через spy++, когда GetWindowText считывает из кнопки значение, то получаю название кнопки, когда с textbox-а, получаю только пустую строку, хотя строка там есть и spy++ ее показывает. |
Автор: Andrey44 21.5.2009, 08:36 | ||
Какое название?
А HANDLE ты правильные получаешь? |
Автор: artsb 21.5.2009, 09:27 | ||
shuttle, вот пример. Вытягивает текст из окна Edit калькулятора и записывает туда свой текст:
Добавлено через 3 минуты и 51 секунду Такой косяк бывает. Не у всех эдитов можно получить текст с помощью GetWindowText. Да у того же калькулятора из примера выше. Сто процентный вариант - это отправить сообщение. Имхо |
Автор: shuttle 21.5.2009, 09:51 |
получаю текст в edit-e посылкой сообщения WM_GETTEXT. А как теперь получить имя(name) edit-а. |
Автор: artsb 21.5.2009, 11:12 |
Мне кажется, что никак. Хотя на 100% не уверен. Да и зачем оно нужно?... |
Автор: Earnest 21.5.2009, 11:17 |
А что, собственно, такое "имя эдита"? Нет у него никакого имени, строкового, по крайней мере. |
Автор: shuttle 21.5.2009, 11:26 |
имя edit-а в MFC это типа IDC_EDIT1, IDC_EDIT2, ... . Текстовых полей очень много, хотелось бы знать, с какого конкретно поля считываю значение. |
Автор: Andrey44 21.5.2009, 12:38 |
Ты никак не сможешь получить. Это идентификатор ресурса.Так что я думаю что никак. |
Автор: artsb 21.5.2009, 13:32 |
shuttle может тебе как-то помогут следующие функции: EnumChildWindows() GetWindowRect() GetClientRect() GetClassName() Т.е. мне кажется, что единственный способ - это сравнивать позиции Edit'ов... |
Автор: mekhanikus 21.5.2009, 15:42 | ||
Может функция GetDlgCtrlID поможет?
|
Автор: bugmenot 21.5.2009, 16:31 | ||
shuttle, воспользуйся программой Window Handle Picker чтоб узнать ID своего EDIT-а: http://www.codeguru.com/cpp/misc/samples/article.php/c1489 Потом вызывай:
Удачи ![]() |
Автор: shuttle 27.5.2009, 12:48 |
С одним диалоговым окном разобрался. Второе - это текстовые поля на интернет странице, ID этих текстовых полней не показывает spy++ из VS и Window Handle Picker. Каким способом можно получить достум к таким текстовым полям. |
Автор: xvr 27.5.2009, 14:50 | ||||
Видимо это не окна
|