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

Сообщение приложению - C++

Восстановить пароль Регистрация
 
Пушкин
1 / 1 / 0
Регистрация: 26.10.2010
Сообщений: 8
14.02.2011, 17:44     Сообщение приложению #1
Здравствуйте, у меня появилась такая проблема, я не знаю как с ней справиться.

Уже третий день мучаюсь с этими сообщениями, в частности WM_KEYDOWN, WM_KEYUP. Задача очень простая, чтобы через определенный промежуток времени срабатывала функция, которая бы кликала мышкой или давила на клавишу. В инете нашел кучу примеров, первые два дня не получалось ничего, сегодня программно выводил сообщение в блокноте, давил на пуск и еще куча всего, до чего руки дотянулись Но никак не получается послать это сообщение в одно из приложений, в spy++ оно выглядит в виде синего окошка, не имеет ответвлений. Я захватываю хендл над ним, и пробую разными способами.

Код
SendMessage(wnd,WM_LBUTTONDOWN,0,0);
SendMessage(wnd,WM_LBUTTONUP,0,0);
Сообщение клика не работает, никакого результата, хотя для меню "Пуск" получилось без проблем.

Код
keybd_event( 0x63, 0x70, KEYEVENTF_EXTENDEDKEY |0, 0 );
keybd_event( 0x63, 0x70, KEYEVENTF_EXTENDEDKEY |KEYEVENTF_KEYUP, 0);
Это тоже не работает, я ставил задержку на 5 секунд, запускал прогу, переходил в нужное приложение - безрезультатно. В блокнотах, калькуляторах и т.д. без проблем.

Код
SendMessage(wnd, WM_KEYDOWN, 0x63, 0);
SendMessage(wnd, WM_KEYUP, 0x63, 0);
Аналогично, хотя я наблюдал его в сообщениях, пробовал с разными параметрами, никакого эффекта. Мне кажется я что то не правильно делаю, или что то не так использую. Но нужно использовать именно этот вариант. В блокноте с этим экспериментировал, там лог выглядит примерно так

- WM_KEYDOWN
- WM_CHAR
- WM_KEYUP

Сам код для последнего варианта выглядит так

Код
HWND wnd,wndd;
	wnd = FindWindow(L"Notepad",NULL);
	wndd = FindWindowEx(wnd,NULL,L"Edit",NULL);
	
	Sleep(5000);

	SendMessage(wndd,WM_KEYDOWN,0x63,0x63);
	//SendMessage(wndd,WM_CHAR,50,50);
	SendMessage(wndd,WM_KEYUP,0x63,0x63);
Если закоментить WM_CHAR то ничего печататься не будет. Почему ? И почему в одном приложении нажатие левой кнопки мыши не работает, а в другом работает. Можно ли взять хендл над драйвером и прямо в него посылать сообщения?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2011, 17:44     Сообщение приложению
Посмотрите здесь:

C++ Как передавать аргументы консольному приложению в Debug?
C++ Добавление звука к приложению
C++ как можно послать своё сообщение другому приложению?
Как подключить пользовательскую DLL к приложению C++
C++ Не удается подключить к приложению gtest и свою статическую либу VS 2010
C++ Функция для получения пути к приложению
C++ Как передать пути в качестве аргументов приложению?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 08:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru