Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/23: Рейтинг темы: голосов - 23, средняя оценка - 4.61
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
1

Кнопка: получить текст из эдит чужого окна

03.11.2011, 20:20. Показов 4697. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно нажать кнопку и взять текст едита чужого окна. С кнопкой я допустим разобрался

C++
1
2
3
4
5
HWND wnd, cwnd;
wnd = FindWindow(NULL, "имя окна");
cwnd = FindWindowEx(wnd, NULL, NULL, "имя кнопки");
SendMessage(cwnd, WM_LBUTTONDOWN, 0, 0);
SendMessage(cwnd, WM_LBUTTONUP, 0, 0);
А вот как быть с едитом я не знаю
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2011, 20:20
Ответы с готовыми решениями:

считать текст с чужого окна
Доброго времени суток! Пишу тут одну программку шпору, но в ходе написания столкнулся со след....

Не могу получить GetPixel от чужого окна
пытаюсь поймать пиксели из DROID4X это эмулятор android на виртуалке procedure...

Получить текст из чужого статусбара
Хочется получить текст из нулевой панели статусбара другого приложения. Хэндл на статусбар получить...

Присвоить текст заголовку чужого окна с русским названием (страдает кодировка)
Добрый день. Вот такой код #include <windows.h> int main(int argc) { HWND thehwnd;

18
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
03.11.2011, 20:46 2
C++
1
2
3
4
char EDIT_TEXT[512]; // буфер
HANDLE temp = Form1->Handle;
SendMessage(temp, WM_GETTEXT, sizeof(EDIT_TEXT), (LPARAM)EDIT_TEXT); //получаем текст в буфер
ShowMessage(EDIT_TEXT);
C++
1
SendMessage(Button2->Handle, BM_CLICK, 0, 0); // клик
2
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
03.11.2011, 20:59  [ТС] 3
Не оченЬ понял как оно должно узнать из какого именно едита в чужой программе взять текст
0
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
03.11.2011, 21:42 4
Flyer, ну не тупи, так же найди эдит как ты нашел кнопку, а потом все просто и понятно написато!
0
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
03.11.2011, 21:56  [ТС] 5
Ех, ну да, туплю. Но вот например с кнопкой ищем имя кнопки, но с едитом что? Текст в нем?
0
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
03.11.2011, 22:12 6
Вот, должно помочь.
1
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
04.11.2011, 00:28  [ТС] 7
хендл кнопки нашло правильно,сравнил с тем, что spy++(spyxx), но кнопка почему то не жмется =/
0
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
04.11.2011, 00:35 8
Flyer, попробуй как нить по другому нажать =)
0
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
04.11.2011, 00:50  [ТС] 9
Попробовал и
C++
1
2
SendMessage(cwnd, WM_LBUTTONDOWN, 0, 0);
SendMessage(cwnd, WM_LBUTTONUP, 0, 0);
и
C++
1
SendMessage(cwnd, BM_CLICK, 0, 0);
(та самая эмуляция первого)
Не работает. С двумя пустыми едитами тоже печаль, оба пусты и оба нужны. как найти оба?

Один находит, но когда он не пустой то передает только первый символ =/
0
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
04.11.2011, 01:03 10
а так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//---------------------------------------------------------------------------
void wj_ClickKeyToWindow(int but, HWND Handle)
{
    if(IsWindow(Handle) == true, Handle != 0)
    {
        SendMessage(Handle, WM_KEYDOWN, but, NULL);
        SendMessage(Handle, WM_KEYUP, but, NULL);
    }
    else
    {
        // handle error
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    HANDLE tmp = Form1->Button1->Handle;
    wj_ClickKeyToWindow(VK_RETURN, tmp);
}
//---------------------------------------------------------------------------
0
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
04.11.2011, 01:09  [ТС] 11
и так тоже нет. кнопка битбатон кст
Вопрос с нахождение едита снят, но вот почему только 1 символ копируется мне все дальше не ясно
0
LK
Заблокирован
04.11.2011, 01:14 12
Лучший ответ Сообщение было отмечено как решение

Решение

Мечты вуайериста - чужие окна
Мечты вуайериста - чужие окна 2
, для внеклассного чтения.
3
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
04.11.2011, 01:19  [ТС] 13
спасиб конечно, но зачем одно и то же 2 ссылками? (:
и про кнопку там ничего нету, и про едит так же, так что в данной ситуации не оч полезно, но так, на досуге почитаю, спасибо
0
LK
Заблокирован
04.11.2011, 01:27 14
исправил, может, кому-нибудь другому будет поинтересней, чем вам
0
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
04.11.2011, 01:34 15
Может не туда отправляешь сообщения?
Миниатюры
Кнопка: получить текст из эдит чужого окна  
0
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
04.11.2011, 01:38 16
сорри!!! не то отправил
Вложения
Тип файла: zip wj_struct_engine_god.zip (1.02 Мб, 48 просмотров)
0
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
05.11.2011, 01:37  [ТС] 17
C++
1
2
3
4
5
wnd = FindWindow(NULL, L"KeyGen-XE2");
wnd = FindWindowEx(wnd, NULL, NULL, L"");
bwnd= FindWindowEx(wnd, NULL, NULL, L"Gen. Seriale");
 
SendMessage(bwnd, BM_CLICK, 0, 0);
та туда вроде, хендлы те что надо.
п.с. программка так, для примера

Добавлено через 26 минут
хмм, попробовал с тестовым приложением (1 кнопка и ее обработчик) то кликается нормально, а в этом чет не хочет. У кнопок в этой проге класс TRzBitBtn

Добавлено через 23 часа 23 минуты
это вообще печально, в других программах нажимается нормально, а тут не хочет да и все. мое предположение - из-за нестандартного контрола. насколько оно верно я не знаю.
Меня больше интересует как нормально скопировать текст с едита. Пробую
C++
1
2
3
SendMessage(e1wnd, WM_GETTEXT, sizeof(buff), (LPARAM)buff);
 
ShowMessage(buff);
и только первый символ. Как нормально сделать?
0
518 / 306 / 58
Регистрация: 30.07.2008
Сообщений: 607
05.11.2011, 02:08 18
можно опробовать костыль, поставить туда фокус, выделить все и скопировать в буфер =)
1
wtf!?
750 / 281 / 25
Регистрация: 21.05.2010
Сообщений: 732
05.11.2011, 10:31  [ТС] 19
примерчик был бы кстати

Добавлено через 8 часов 14 минут
справился с едитом.
Gremlin, ты делал свою ту программу на 6 билдере, а я на рад хе2, юникод чтоб ему
собственно проблема решается или
C++
1
2
wchar_t buff[500];
SendMessage(e1wnd, WM_GETTEXT, sizeof(buff), (LPARAM)buff);
или
C++
1
2
char buff[500];
SendMessageA(e1wnd, WM_GETTEXT, sizeof(buff), (LPARAM)buff);
Но вот почему именно та кнопочка не кликается, меня все еще беспокоит
1
05.11.2011, 10:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2011, 10:31
Помогаю со студенческими работами здесь

Получить текст из Edit чужого приложения
Дорогие Друзья. Помогите пожалуйста . В чем различия GetWindowText и WM_Gettext. И можноли вообше...

Как получить текущую раскладку клавиатуры для чужого активного окна?
Что нужно передавать в GetKeyboardLayout для того, чтобы получить раскладку активного чужого окна,...

Эдит контролы в вектор векторов и изменение размера окна
Не могу запихать эдит контролы в вектор векторов protected: // 0-ая строка CEdit...

Получить текст из окна браузера
Имеется открытое окно браузера (например Chrome), в которое загружена web-страница. С этой страницы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru