2013-12-18 3 views
3

Мне уже удалось отправить текст в пользовательское текстовое поле i, созданное с помощью C++, и в блокнот, calc и другие программы с 1 окном и 1 текстовым полем. однако, я хочу отправить текст в другую программу, которая имеет более одного текстового поля и также находится в вкладках. она структурирована следующим образом:добавление текста в другое текстовое поле программы C++

  1. открытая программа
  2. выбрать из выбора 2-х вкладок: а. статистика b. конфигурации (который содержит текстовые поля)
  3. заливка в 4 текстовых полей с заданными значениями

я попробовал WinSpy ++ не повезло, вот простой код я работаю с.

#include <windows.h> 

int main() 
{ 
HWND hNote; 
HWND hChild; 

if (!(hNote=FindWindow("windowname",NULL))) 
    exit(1); 

if (!(hChild=FindWindowEx(hNote,NULL,"EDIT",NULL))) 
    exit(2); 

SendMessage(hChild,WM_SETTEXT,NULL,(LPARAM)"texttoadd"); 

return 0; 
} 

Может ли кто-нибудь помочь мне решить эту проблему?

+3

Spy ++ - это именно тот инструмент, который поможет вам найти иерархию дочерних окон. Почему у вас «не повезло»? –

+0

Я ошибся при чтении результатов от winspy, я убедился, что у меня есть правильный дескриптор с использованием wm_gettext. однако есть и другая проблема: дескриптор меняется каждый раз, когда программа закрывается и снова открывается. – user3116155

ответ

3

Таким образом, проблема заключается в том, чтобы получить ручку конкретного элемента управления. Вы можете использовать, например, следующие способы для нахождения ручки элемента управления:

  • управления можно отличить по идентификатору управления, а затем использовать GetDlgItem функцию, чтобы получить его ручку. Контрольный идентификатор можно найти с помощью таких инструментов, как Spy ++ или InqSoft Windows Scanner или другой.
  • MSDN говорит, что управление можно найти по координатам точки внутри родительского окна на ChildWindowFromPoint, ChildWindowFromPointEx или RealChildWindowFromPoint функции.
  • Или все элементы управления могут быть перечислены в родительском окне на EnumChildWindows, а соответствующий может быть найден с использованием пользовательских правил.
Смежные вопросы