Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Найти окно + заполнить текстбоксы.


Автор: cra6 21.1.2008, 02:12
Уважаемые господа имеется задачка - Есть открытое окно с 10 -12 текст боксами.их надо заполнить инфой из моих текст боксов.В winapi новичок.Так что пожалста ,если не затруднит, обьясните пошагово или дайте примерчик сам разбирусь.Премного благодарен.

Автор: dizzy1984 21.1.2008, 07:14
Для установки текста окна (текст. бокса) - 
Код

BOOL SetWindowText(          HWND hWnd,
    LPCTSTR lpString
);

Соотвественно чтобы узнать hWnd окна
Код

HWND FindWindow(          LPCTSTR lpClassName,
    LPCTSTR lpWindowName
);

узнаем hwnd родительского окна (на котором он расположен)
и затем по веточкам, (по веревке, по канату, по цепочке... год за годом... smile)
Код

HWND GetWindow(          HWND hWnd,
    UINT uCmd
);

Если это диалог, то можно 
Код

HWND GetDlgItem(          HWND hDlg,
    int

Автор: cra6 21.1.2008, 10:20
Спасибо.  smile 

Автор: cra6 4.2.2008, 20:05
Проблема в следующем.В винсайте видны только 3-4 дочерних окна + ещё 5-6 hidden.Хендл главного я получил.Но внутри главного както хитро открывается диалоговое окно(за пределы главного не выносится) с которым мне необходимо работать.Но достучатся до которого не вижу возможности.То ли это невозможно ,то ли у меня руки кривые ,что более вероятно.Может кто что посоветует...

Автор: dizzy1984 5.2.2008, 06:49
Ты хочешь сказать что не видишь это диалоговое окно в качестве потомка главного?
Тогда оно само по себе является главным и его надо искать точно так же как и главное окно.

Автор: cra6 5.2.2008, 10:21
Оно не главное никак.Проверено и в винсайте и функцией FindWindow.
+

hWnd = GetForegroundWindow();
GetWindowText(hWnd,szTitle,40);

 -хендл главного получается взять ,а диалога нет.

Автор: dizzy1984 6.2.2008, 08:50
А если дальше
Код

HWND hwnd = GetWindow(hWnd, GW_CHILD);

?
Проект можешь выслать?

Добавлено через 1 минуту и 41 секунду
В смысле проект/программу с загадочным диалоговым окном

Автор: cra6 6.2.2008, 10:34
Цитата

А если дальшекод C++
1:
  HWND hwnd = GetWindow(hWnd, GW_CHILD);
?


Дальше хендл берётся но от чего он понять не могу.Точнее не до конца могу.Это вроде как панель с кнопками если верить винсайту...

GetWindowText(hWnd,szTitle,40); ничего не возвращает.
Прикрепил скрин.Программу/исходник выслать не могу так как програма "полусекретная", а исходника вообще нет.Если б был не заморачивался бы с Винапи.Может как то поможет...

Автор: dizzy1984 6.2.2008, 14:28
Цитата(cra6 @  6.2.2008,  12:34 Найти цитируемый пост)
Это вроде как панель с кнопками если верить винсайту

В терминологии виндоус кнопки - тоже окна. Используй spy++ дабы не было идеологических противоречий. Картинка поможет мало -  могу повториться получаешь HWND Окна с надписью "free message..." и находишь HWND его потомка. Это может быть первое поле для ввода, радиобатон "issuer", либо даже кнопка "<<&Back". А может быть это диалог-контейнер для всех этих окон (полей для ввода), тогда ты снова находишь его ребенка, и опять это может быть либо поля для вводи либо какой-то из других контролов на окне. Либо там аж целых 2 вложенных контейнера. Но мы ведь не боимся проверить аж 2 возможных варианта?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)