Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как считать запись с другой формы? Котороя динамически меняется ?  
:(
    Опции темы
Папараццы
Дата 25.12.2007, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Например как считать запись "Running - OPER660 - MSSQLServer", котороя периодически будет менятся ? Во вложенном файлике я  отчет вывел из  WinSight. Мне как я понел нужно использовать WinApi и функцию FindWindowEx. Но как именно считать текст?  

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  toforum.JPG 72,53 Kb


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
pandrew
Дата 25.12.2007, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 27.3.2006

Репутация: 3
Всего: 3



WM_GETTEXT, GetWindowText
PM MAIL   Вверх
Папараццы
Дата 26.12.2007, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Код

int GetWindowText(      
    HWND hWnd,
    LPTSTR lpString,
    int nMaxCount
);


Я что то не понел.. Как можно int присвоить текст ? 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
Папараццы
Дата 26.12.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



  А как мне найти хандл текста который меняется ?  Мне то и надо найти сам текст. 


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
ProgMaster
Дата 26.12.2007, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 24.1.2006
Где: Estonia

Репутация: нет
Всего: нет



Цитата(Папараццы @  26.12.2007,  08:46 Найти цитируемый пост)
Я что то не понел.. Как можно int присвоить текст ?  

А никак. Открой MSDN и посмотри что и чему нужно присвоить.

Цитата(Папараццы @  26.12.2007,  10:26 Найти цитируемый пост)
А как мне найти хандл текста который меняется ?  Мне то и надо найти сам текст.  

Вначале ищешь хендл главной формы: 
Код

HWND hMain = FindWindow(NULL, "MainForm");

Дальше ищешь тот контрол с тем текстом что нужно:
Код

HWND hChild;
int iCtrlInd = 0;
while((hChild = FindWindowEx(hMain, NULL, 0, 0)) != NULL)
{
  char s[80] = {0};
   GetWindowText(hChild, s);
  iCtrlInd ++;
  ShowMessage("Control txt: " + s + " and its index at form: " + IntToStr(iCtrlInd));
}

Запоминаешь индекс. Потом просто:
Код

for (int i = 0; i < iCtrlInd - 1; i++)
  hChild = FindWindowEx(hMain, NULL, 0, 0);

hChild = FindWindowEx(hMain, NULL, 0, 0); // это будет нужный контрол


Это конечно образно говоря (этот код даже не скомпилиться). Ну а дальше MSDN и у тебя все получится ;).
PM MAIL ICQ   Вверх
Папараццы
Дата 27.12.2007, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Этот код будет выдовать все записи на форме.  А мне конкретно нужна одна строка. Притом она каждый раз меняется. Интересно можно ли поймать местоположение этого лейбла ? (не по имени а по классу или есче что то в этом роде)


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
ProgMaster
Дата 27.12.2007, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 58
Регистрация: 24.1.2006
Где: Estonia

Репутация: нет
Всего: нет



Цитата(Папараццы @ 27.12.2007,  09:40)
Этот код будет выдовать все записи на форме.  А мне конкретно нужна одна строка. Притом она каждый раз меняется. Интересно можно ли поймать местоположение этого лейбла ? (не по имени а по классу или есче что то в этом роде)

Не будет он выдавать все записи. Я все подробно расписал, так что попробуй еще раз чутка напрячься и перечитать мой пост. А ловить тут ничего не надо, есть такая тема как TabOrder, именно этот принцип я и использовал.

Подсказочка: в итоговом коде тебе нужно будет юзать только лишь последний код из моего сообщения.

Это сообщение отредактировал(а) ProgMaster - 27.12.2007, 14:20
PM MAIL ICQ   Вверх
Папараццы
Дата 22.1.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 475
Регистрация: 18.9.2006
Где: Баку

Репутация: нет
Всего: нет



Код

HWND hwnd1,hwnd2,hwnd3;
hwnd1=FindWindow(NULL,"test form");
hwnd2=FindWindow(NULL, "cvbxcfbxcf");
hwnd3=FindWindowEx(hwnd1,hwnd2,0,0);

наличие формы под именем "test form" я нахожу через if (hwnd1!=NULL) А вот как найти наличие Child ? Потомучто FindWindowEx всегда возвращает  какоето значение даже если на форме явно нету такого окна... Как разобраться с этим ?  


--------------------
/*---------------------------------------------------------------------------------*/
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.