Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
1

Передача сообщений в окно

19.06.2011, 15:54. Показов 3404. Ответов 30
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть прогрмка , написаная мной же с использованием MFC в которой имеется поле для ввода и кнопка.
По нажатию кнопки из текстового поля считывается содержимое сравнивается с некоторой строкой "паролем" и в еще одном поле выводится : угадан или не угадан пароль.


Помогите написать что-то что смогло бы *перебирать* пароли, нажимать кнопку.
Погугллив я нашел вроде, что это делается через сообщения типо sendMessage(,,,,);
но вот не могу понять ни как узнать параметры для этой функции, ни как ее использовать

Буду рад простым примерам программ , которые передают какому либо окну какое-либо сообщение (хоть нажатие кнопочки), ну и ссылкам на ресурсы где это доступно описано.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.06.2011, 15:54
Ответы с готовыми решениями:

Передача сообщений об ошибке пользователю
Всем привет! В общем, пишу свою небольшую библиотеку для закрепления теоретических знаний на...

Передача сообщений между exe файлами
Драсти! Подскажите пожалуйста как можно из одного приложения передать допустим строку во второе...

Передача сообщений в окно приложения
Добрый день. Есть приложение, которое запускается моей программой. Далее это приложение выдает окно...

Отправка сообщений в окно
Суть проблемы в том, что не могу отправить сообщение о том, что я нажал кнопку F1, F2, F3, F4, F5,...

30
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
19.06.2011, 16:15 2
http://www.firststeps.ru/mfc/steps/help/r.php?259
0
935 / 760 / 299
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
19.06.2011, 16:16 3
::SendMessage(дескриптор элемента-HWND, идентификатор сообщения, 1-параметр, 2 - параметр)

C++
1
2
3
4
5
6
7
8
9
10
void CApplicationDlg::OnButton1() 
{
    HWND w = ::GetDlgItem(m_hWnd, IDC_EDIT1);
    ::SendMessage(w, EM_SETPASSWORDCHAR, (WPARAM) '*', LPARAM(0));
    char  c = (char) ::SendMessage(w, EM_GETPASSWORDCHAR, WPARAM(0), LPARAM(0));
 
    if(c == '*' )
        MessageBox("YES", "PASSWORD", MB_OK | MB_ICONINFORMATION);
 
}
0
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
19.06.2011, 19:53  [ТС] 4
возможно для этого нужна какая-то vs новая?
у меня 2008 пишет много всего нехорошего


error C2065: 'HWND' : undeclared identifier
error C2146: syntax error : missing ';' before identifier '_hwnd'
error C2065: '_hwnd' : undeclared identifier
error C2653: 'std' : is not a class or namespace name


хотя windows.h и winuser.h подключены
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
19.06.2011, 22:48 5
Там в сообщении N 15 я пришёл к какому-то выводу:
Имитация клавишь в другом окне
1
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 22:49  [ТС] 6
Замечательно!

Спустя 4 дня поисков что-то заработало )


Смог (ну точнее ваша программа смогла) ввести в поле ввода !
Ну я думаю теперь дело быстрее пойдет, всегда главное найти первый пример который заработает)


Короче, еще раз спасибо.


сейчас попробую кнупку нажимать таким же способом
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.06.2011, 23:04 7
Побаще будет
Управление калькулятором из другой программы
0
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:14  [ТС] 8
Все, в текстовое поле сообщение вводится, кнопочка нажимается, остался один вопрос:

а как стирать содержимое текстового поля? ну то есть чтобы организовать перебор нада подставлять(готово), проверять (готово), стирать ( =( ) и заново

как-то нада сообщение (<-) передавать ?
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.06.2011, 23:33 9
Ну наверное, это ты смотри справочник по сообщениям окну, здесь тоже можешь глянуть, может найдёшь чё, щас в личку напишу
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
20.06.2011, 23:40 10
Цитата Сообщение от ruscrypto Посмотреть сообщение
а как стирать содержимое текстового поля? ну то есть чтобы организовать перебор нада подставлять(готово), проверять (готово), стирать ( =( ) и заново
C
1
SetWindowText(hwnd, "");
Добавлено через 3 минуты
Цитата Сообщение от ruscrypto Посмотреть сообщение
Помогите написать что-то что смогло бы *перебирать* пароли, нажимать кнопку.
имхо не вижу целесообразности в подобной программе, кроме упражнения в программировании. т.к. проще реверсить исходный код испытуемой программы и определить пароль, чем перебирать. Кстати, каноническая защита от брутфорса - если не верный пароль поспим с секунду перед тем как вернуть ответ о неверном пароле. Данный метод делает брутфорс практически невозможным.
0
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:42  [ТС] 11
SetWindowText(hwnd, "");

не работает, как ни жаль (
просто ничего не происходит, никаких ошибок, но текст остается на своем месте


Да, исключительно упражнение в программировании
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
20.06.2011, 23:48 12
C
1
SetWindowText(идентификатор_текстового_окна, "");
Добавлено через 40 секунд
Запостите полный исходник, чтобы мы не играли в испорченный телефон

Добавлено через 3 минуты
или попробуйте функцию
C
1
SendMessage( hwnd, WM_SETTEXT, 0, 0 );
0
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:57  [ТС] 13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#define MY_BUFSIZE 1024   
int main () {
 
 
 char bufer_dla_vvodim_simv [MY_BUFSIZE];
 HWND DeskriptorOkna;
 HWND DeskriptorKnki;
 
 //Поехали
 printf ("vvodi deskriptor okna  ");
 scanf ("%d", &DeskriptorOkna);
  printf ("vvodi deskriptor knopki  ");
 scanf ("%d", &DeskriptorKnki);
 
  fflush (stdin);
 printf ("vvodi text\n");
 gets (bufer_dla_vvodim_simv);
  
  for (int i= 0; bufer_dla_vvodim_simv[i]; i++ ) {
 
  PostMessage (DeskriptorOkna,WM_CHAR, bufer_dla_vvodim_simv[i], 1);
 } 
 PostMessage (DeskriptorKnki,BM_CLICK, 0,0);
 
 
 
 for(int t = 0;t<10;t++)
    PostMessage (DeskriptorOkna,WM_CHAR, 0x08, 1);
 
 
 return 0;
}


вот так заработало как я хотел
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.06.2011, 00:17 14
вместо цикла с посылкой WM_CHAR на каждый элемент массива используйте сообщение WM_SETTEXT и тогда ничего затирать не нужно будет, обработчик окна сам за вас все сделает при обработке сообщения WM_SETTEXT (псевдокод):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  // ...
  // в буфере пароль - строка с завершающим нулевым символом
  for (;;)
  {
      // инкрементировали буфер
      // назначем edit текст
      PostMessage(DeskriptorOkna, WM_SETTEXT, 0, (LPARAM)buffer);
      // нажимаем кнопку
      PostMessage( DeskriptorKnki, BM_CLICK, 0, 0);
      if (угадали_пароль) break;
  }
  радоваться_отгаданному_паролю();
  откупорить_бутылку_пива();
  // ...
1
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 15:57  [ТС] 15
Почему Object Viewer может не видеть окошко?

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

Так вот object не видит ни окошко ни кнопку в нем оО?
А пока открыто это окошко ( о неправильном вводе) основное окно ни закрыть ни кнопки потыкать...
Миниатюры
Передача сообщений в окно  
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.06.2011, 16:10 16
Цитата Сообщение от ruscrypto Посмотреть сообщение
Так вот object не видит ни окошко ни кнопку в нем оО?
Ну как это не видит - BorBtn это и есть кнопки. Вы раньше нажимали кнопки из WinAPI, а это просто реализация кнопок из Борландовской старой библиотеки OWL.

Добавлено через 2 минуты
Но если вы собрались заниматься брутфорсом данной проги имхо много быстрее будет найти внутри программы верные ответы.
0
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 16:14  [ТС] 17
Неа, это он видит кнопочки которые в окошке основном, а кнопку ОК он не видет
он видит три кнопки (как я понимаю это окей (левого окна) хелп и кансел
а второй окей не видит

Добавлено через 3 минуты
Найти ответы внутри самой прги это конечно заманчиво)
Это делается чем-то типо IDA ? я просто только приблизительно знаю что это, да и асемблер у меня только в следующем семестре)
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.06.2011, 16:19 18
Вы про сообщение об ошибке? Это скорее всего функция типа MessageBox, только реализованная внутри OWL. Получить хендл этого окна можно вызвав, например GetForegroundWindow() а потом этому окну послать код клавиши Enter через функцию keybd_event() - отработает дефолтная кнопка - т.е. кнопка ОК.
0
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 16:28  [ТС] 19
так а вопрос про вытаскивание ответов из самой проги?
0
Эксперт С++
3071 / 1409 / 425
Регистрация: 19.01.2009
Сообщений: 3,880
21.06.2011, 16:46 20
Прога большая? можете запостить?

Не по теме:

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

0
21.06.2011, 16:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.06.2011, 16:46
Помогаю со студенческими работами здесь

Передача больших сообщений
Проблема состоит в том что сервер принимает структуру в структуре есть поле char a; оно передается...

Окно вывода в студии - и посылка сообщений
Не подскажете как при выполнении кода посылать сообщения в окно вывода. например я хочу смотреть...

Передача сообщений по локальной сети
Может кто подкинуть простейший пример передачи текстовых сообщений хотябы между 2 компами

Передача сообщений через pipe
Прошу помочь с реализацией курсового проекта. Я очень плохо шарю в c++, поэтому ничего не могу...

Передача сообщений между клиентами
Всем привет! Пытаюсь написать программу для передачи сообщений между клиентами (пример взят из...

Передача сообщений через хендел
Здравствуйте. Как мне зная хендел окна передать сообщение Left, Top, Width, Height, WindowState?


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

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