Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Проблема с программным нажатием на кнопку


Автор: gromo 29.7.2011, 09:26
Всем привет!
Пишу программу, которая работает с окном чужого приложения, но столкнулся с проблемой. не могу нажать на кнопку. Нажати должно происходить по заданным координатам.
Кусок кода ниже.
Подскажите в чём проблема, пожалуйста

Код

void ClickButton(HWND hwndPanel, COORD *coord)
{
    LPARAM param = MAKELPARAM(coord->X, coord->Y);
    PostMessage(hwndPanel, WM_LBUTTONDOWN, MK_LBUTTON, param);_sleep(5);
    PostMessage(hwndPanel, WM_LBUTTONUP, MK_LBUTTON, param);_sleep(5);
}

Автор: BorisVorontsov 29.7.2011, 12:43
В том, что ты отсылаешь сообщения вполне конкретному окну, которое, судя по названию переменной, кнопкой не является. И еще не известно, насколько корректны координаты, записанные в cTimeStep/coord. Нажатие устройств ввода эмулируется функцией SendInput, или посредством посыла соответствующих сообщений конкретно тому окну, которое должно на эти сообщения отреагировать. Но если речь идет именно о кнопке, то правильнее отсылать специально предназначенное для программного нажатия сообщение -- BM_CLICK

Автор: gromo 29.7.2011, 13:22
Может не совсем точно объяснил, попробую ещё раз:
Есть окно "чужой" программы, на данном окне есть кнопка. Окно "рисованное", поэтому и был сделан эмулятор мыши.
Ранее всё отлично работало, но сейчас почему-то не отрабатывает именно нажатие на кнопку.

Автор: Dem_max 29.7.2011, 21:20
используй SendInput

Автор: BorisVorontsov 30.7.2011, 20:31
Цитата(gromo @  29.7.2011,  13:22 Найти цитируемый пост)
Ранее всё отлично работало, но сейчас почему-то не отрабатывает именно нажатие на кнопку

Что изменилось между "раньше" и "сейчас"? Версия целевой программы?

Автор: gromo 31.7.2011, 08:18
Кроме винды, ничего не менялось

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)