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

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

Войти
Регистрация
Восстановить пароль
 
Пушкин
1 / 1 / 0
Регистрация: 26.10.2010
Сообщений: 8
#1

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

14.02.2011, 17:44. Просмотров 317. Ответов 0
Метки нет (Все метки)

Здравствуйте, у меня появилась такая проблема, я не знаю как с ней справиться.

Уже третий день мучаюсь с этими сообщениями, в частности 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 то ничего печататься не будет. Почему ? И почему в одном приложении нажатие левой кнопки мыши не работает, а в другом работает. Можно ли взять хендл над драйвером и прямо в него посылать сообщения?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.02.2011, 17:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сообщение приложению (C++):

Как послать своё сообщение другому приложению? - C++
#define WM_MYMESSAGE 2000 void main() { HWND hWnd; hWnd = ::FindWindow(NULL,"MyApp"); ...

Добавление звука к приложению - C++
Всем доброго времени суток. Друзья, не подскажет ли кто, как к своему WIN32API приложению добавить ресурс звука, я в этом плане еще...

Как привязать к консольному приложению иконку? - C++
Как назначить иконку консольному приложению? Чтоб как нормальная программа выглядела.

Функция для получения пути к приложению - C++
Привет, как написать функция которая будет возвращать путь к запущенному приложении ? if( !gSplashTexture.loadFromFile( "splash.png" ) )...

Как подключить пользовательскую DLL к приложению - C++
Добрый вечер! Я первый раз пишу dll. Вот ее текст: My.cpp: #include<iostream> #include "My.h" using namespace std; namespace...

Как передавать аргументы консольному приложению в Debug? - C++
Я написал программу, не могу найти ошибку и хочу воспользоватся дебаггом. У меян в программу передается 2 аргумента: имя файла и слово, с...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.02.2011, 17:44
Привет! Вот еще темы с ответами:

Как передать пути в качестве аргументов приложению? - C++
Здравствуйте. Как запускать приложения в дебагере VS с параметрами? Как передать пути приложению, запуская его другим приложением....

Как правильно приложению отреагировать на завершение работы системы? - C++
Какие сигналы посылает windows процессам при завершени работы? Как поймать этот сигнал? Как вовремя обработать? Что почитать по этой теме? ...

Не удается подключить к приложению gtest и свою статическую либу VS 2010 - C++
Здравствуйте, господа. Возникла проблема с линкером в VS 2010 после подключения к консольному приложению собственной же статической...

Приложению не удалось запуститься, поскольку MSVCR90D.dll не был найден - C++
Приложению не удалось запуститься, поскольку MSVCR90D.dll не был найден. Иногда при отладке возникает данная ошибка. В чем проблема и...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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