Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 5.00
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
#1

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

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

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


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

Буду рад простым примерам программ , которые передают какому либо окну какое-либо сообщение (хоть нажатие кнопочки), ну и ссылкам на ресурсы где это доступно описано.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2011, 15:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача сообщений в окно (C++):

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

вывести окно сообщений с именем клетки, где находится курсор в шахматной нотации. - C++
Уже отчаялась искать в своем городе и в сети того, кто смог бы сделать следующее. Если кто сталкивался или может помочь - буду очень...

Книги по С++ для дельфиста (интересы: реализация классов, передача сообщений классам, RTTI, СOM) - C++
Приветствую! И так перейду к делу. Я дельфист. И тут возникла задача в реализации кросс-платформенной программы которая использует ffmeg...

Передача дочернему окну указателя на родительское окно - C++
Как передать дочернему окну ТИПИЗИРОВАННЫЙ!!!( не void* ) указатель на родительское окно?

Конструкторы,передача сообщений объектам и реакции объектов на сообщения в С++ - C++
Привет всем! Тему чуть-чуть понимаю,но задачу сделать не могу, вы не могли бы мне помочь с этим? вот задача:Создаваемый объект должен...

Создать класс окно, используя композицию и иерархию, определить окно заголовком и кнопкой. - C++
Создать класс окно, используя композицию и иерархию, определить окно заголовком и кнопкой. Класс заголовок и окно тоже должны быть...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
19.06.2011, 16:15 #2
http://www.firststeps.ru/mfc/steps/help/r.php?259
xAtom
914 / 739 / 60
Регистрация: 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);
 
}
ruscrypto
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 подключены
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
19.06.2011, 22:48 #5
Там в сообщении N 15 я пришёл к какому-то выводу:
Имитация клавишь в другом окне
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 22:49  [ТС] #6
Замечательно!

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


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


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


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

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

как-то нада сообщение (<-) передавать ?
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
20.06.2011, 23:33 #9
Ну наверное, это ты смотри справочник по сообщениям окну, здесь тоже можешь глянуть, может найдёшь чё, щас в личку напишу
schdub
2946 / 1290 / 238
Регистрация: 19.01.2009
Сообщений: 3,385
Завершенные тесты: 1
20.06.2011, 23:40 #10
Цитата Сообщение от ruscrypto Посмотреть сообщение
а как стирать содержимое текстового поля? ну то есть чтобы организовать перебор нада подставлять(готово), проверять (готово), стирать ( =( ) и заново
C
1
SetWindowText(hwnd, "");
Добавлено через 3 минуты
Цитата Сообщение от ruscrypto Посмотреть сообщение
Помогите написать что-то что смогло бы *перебирать* пароли, нажимать кнопку.
имхо не вижу целесообразности в подобной программе, кроме упражнения в программировании. т.к. проще реверсить исходный код испытуемой программы и определить пароль, чем перебирать. Кстати, каноническая защита от брутфорса - если не верный пароль поспим с секунду перед тем как вернуть ответ о неверном пароле. Данный метод делает брутфорс практически невозможным.
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
20.06.2011, 23:42  [ТС] #11
SetWindowText(hwnd, "");

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


Да, исключительно упражнение в программировании
schdub
2946 / 1290 / 238
Регистрация: 19.01.2009
Сообщений: 3,385
Завершенные тесты: 1
20.06.2011, 23:48 #12
C
1
SetWindowText(идентификатор_текстового_окна, "");
Добавлено через 40 секунд
Запостите полный исходник, чтобы мы не играли в испорченный телефон

Добавлено через 3 минуты
или попробуйте функцию
C
1
SendMessage( hwnd, WM_SETTEXT, 0, 0 );
ruscrypto
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;
}


вот так заработало как я хотел
schdub
2946 / 1290 / 238
Регистрация: 19.01.2009
Сообщений: 3,385
Завершенные тесты: 1
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;
  }
  радоваться_отгаданному_паролю();
  откупорить_бутылку_пива();
  // ...
ruscrypto
2 / 2 / 0
Регистрация: 19.06.2011
Сообщений: 26
21.06.2011, 15:57  [ТС] #15
Почему Object Viewer может не видеть окошко?

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

Так вот object не видит ни окошко ни кнопку в нем оО?
А пока открыто это окошко ( о неправильном вводе) основное окно ни закрыть ни кнопки потыкать...
Миниатюры
Передача сообщений в окно  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2011, 15:57
Привет! Вот еще темы с ответами:

Создать окно с кнопкой, закрывающей это окно - C++
Создайте новый оконный проект в ОС Microsoft Windows 7 или Linux. Разместите посередине окна кнопку с надписью &quot;Close&quot;. После нажатия...

Как сделать окно (окно домика) в пространстве, как на изображении? - C++
Здравствуйте, как сделать окно в пространстве, как на изображении? сделал крышу и &quot;фундамент&quot;: for (int i = 0, x = 9; i &lt; 21;...

Передача значения и передача переменной - C++
объясните мне разницу...и с кодами пожалуйста...думаю передача значений это через ссылки\указатели,а передача переменных-переменных ...

Последовательность сообщений - C++
Здравствуйте. Есть переменная char obuf = &quot;Hello from Client&quot;; как передать последовательность сообщений вида Hello from Client xxx (xxx ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.06.2011, 15:57
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru