Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2010, 18:45   #1
Baisangur
Новичок
Джуниор
 
Аватар для Baisangur
 
Регистрация: 17.06.2009
Сообщений: 2
По умолчанию Чтение строки из TLabeledEdit чужого приложения.

Возникла необходимость считать строку содержащуюся в TLabeledEdit другого приложения, но возникла проблема.
Ковыряемое приложение хранит содержание эдитов в ини файле, загружает она это содержание при запуске приложения, когда я из своей программы считываю тексты в эдитах, а делаю это посредством GetWindowText, то получается считать лишь ту информацию, которая была загружена из ини файлов, даже если в чужом приложении поменять содержание эдитов то я всё равно получаю старое содержание.

Вот кусок кода которым я читаю содержание эдитов:
Код:
//Каллбак для EnumChildWindows
BOOL CALLBACK ChildWindowsProcessing(HWND hWindow, LPARAM lParam) {
    int iEditClassNameLength = lstrlen(EDIT_CLASSNAME) + 1;
    char *buffer = malloc(iEditClassNameLength);

    GetClassName(hWindow, buffer, iEditClassNameLength);

    if(lstrcmp(buffer, EDIT_CLASSNAME) == 0) {
        free(buffer);
        GetWindowText(hWindow, buffer, 12);
        printf("%s\n", buffer);
    }

    free(buffer);
}
Baisangur вне форума Ответить с цитированием
Старый 02.08.2010, 20:16   #2
Baisangur
Новичок
Джуниор
 
Аватар для Baisangur
 
Регистрация: 17.06.2009
Сообщений: 2
По умолчанию

В ожидании ответов разобрался сам

Оказывается если вместо функции GetWindowText использовать SendMessage c сообщением WM_GETTEXT, то всё работает как нужно.

Собственно вот рабочий код:
Код:
//Каллбак для EnumChildWindows
BOOL CALLBACK ChildWindowsProcessing(HWND hWindow, LPARAM lParam) {
    int iEditClassNameLength = lstrlen(EDIT_CLASSNAME) + 1;
    char *buffer = malloc(iEditClassNameLength);

    GetClassName(hWindow, buffer, iEditClassNameLength);

    if(lstrcmp(buffer, EDIT_CLASSNAME) == 0) {
        free(buffer);
        SendMessage(hWindow, WM_GETTEXT, 12, buffer);
        printf("%s\n", buffer);
    }

    free(buffer);
}
Baisangur вне форума Ответить с цитированием
Старый 05.08.2010, 23:01   #3
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

Подскажите как вы находите хангл другого окна
всему свое время как зиме и весне
и каждому солнцу свой неба кусок
Assemblerru вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как запретить сворачивание чужого приложения 856100 Общие вопросы Delphi 11 23.07.2010 01:36
Hint чужого приложения Umberto Win Api 0 07.02.2010 18:41
Запрет на закрытие чужого приложения S@fer Win Api 2 12.07.2009 19:47
Как скопировать текст чужого приложения? Nikolay-niw32 Общие вопросы Delphi 17 12.03.2009 21:28
Как определить путь чужого приложения? VVM Win Api 3 02.12.2008 18:22