Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клик по неактивному окну 
:(
    Опции темы
RinOSpro
Дата 25.8.2010, 15:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет! Облазил пол инета но так и не нашел ответа на достаточно простой вопрос... 
Как кликнуть по неактивному окну то есть если окно свернутое или оно находится за другим окном?

Один из способов это использовать SetForegroundWindow, но это не лучший вариант имхо.
Сейчас кликаю так:

Post/Send Message(LHandle, WM_LBUTTONDOWN, MK_LBUTTON, MakeLParam(LPoint.X, LPoint.Y));
Post/Send Message(LHandle, WM_LBUTTONUP, MK_LBUTTON, MakeLParam(LPoint.X, LPoint.Y));

Можно ли вообще кликать по неактивному окну? без патча ядра)

Это сообщение отредактировал(а) RinOSpro - 25.8.2010, 15:26
  Вверх
RinOSpro
Дата 9.9.2010, 14:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Людии) где выы) Не ужели ни кто не знает...
  Вверх
okkonst
Дата 9.9.2010, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.9.2010
Где: Воронеж

Репутация: нет
Всего: 1



Например - так. последний ноль - туда, вестимо, лучше передать координаты мыши.
Postmessage(WND, WM_LBUTTONDOWN, 0,0);
PostMessage(WND, WM_LBUTTONUP,0,0);


PM MAIL   Вверх
RinOSpro
Дата 9.9.2010, 14:46 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











О боже... да ты даже не удосужился пост до конца дочитать.
  Вверх
Keeper89
Дата 9.9.2010, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2580
Регистрация: 26.2.2009

Репутация: 14
Всего: 58



Цитата(RinOSpro @  25.8.2010,  15:25 Найти цитируемый пост)
Как кликнуть по неактивному окну

По заголовку окна или куда щелкнуть?


--------------------
PM MAIL WWW   Вверх
okkonst
Дата 9.9.2010, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.9.2010
Где: Воронеж

Репутация: нет
Всего: 1



Удосужился. Просто ты не удосужился нормально вопрос задать. И сказать, в чем проблема. Собственно, чего ты хочешь? Например, на твой вопрос можно ответить так: нет, нельзя, поскольку, как только ты кликнешь мышой на неактивном окне - оно станет активным, и ты будешь щелкать по АКТИВНОМУ окнуsmile  А вот если тебе надо на кнопку нажать - это СОВСЕМ другой вопрос. Обычно это WM_COMMAND родителю...

Это сообщение отредактировал(а) okkonst - 9.9.2010, 16:29
PM MAIL   Вверх
RinOSpro
Дата 9.9.2010, 16:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Keeper89 @  9.9.2010,  15:16 Найти цитируемый пост)
По заголовку окна или куда щелкнуть?

Цитата
кликнуть по неактивному окну то есть если окно свернутое или оно находится за другим окном?

В любое место, по заданным кординатам.

user posted image

Цитата(okkonst @  9.9.2010,  16:24 Найти цитируемый пост)
Сэмулировать мышиный щелчок на уровне mouse_event 

Читай вопрос снова:
Цитата(RinOSpro @  25.8.2010,  15:25 Найти цитируемый пост)
Один из способов это использовать SetForegroundWindow, но это не лучший вариант имхо.

с mouse_event придется делать окно активным, чего я и хочу избежать, что бы постоянное мерцание не раздражало.


Это сообщение отредактировал(а) RinOSpro - 9.9.2010, 16:50
  Вверх
okkonst
Дата 9.9.2010, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 33
Регистрация: 5.9.2010
Где: Воронеж

Репутация: нет
Всего: 1



Цитата(RinOSpro @ 9.9.2010,  16:48)
В любое место, по заданным кординатам.

В общем случае твоя задача вряд ли имеет однозначное решение.  По сути, она сводится к эмуляции пользовательского ввода... без оного.  Частные решения, безусловно есть, но они могут зависеть от управляемой программы. Самое простое и, пожалуй, надежное - то, что ты и сам применил. Кстати, ты так и не сказал, чем оно тебя не устраивает. Подозреваю, что работоспособность оного зависит от алгоритма обработки сообщения. Например, внутри может происходить считывание координат мыши (GetCursorPos) - тогда перед отправкой надо мышку правильно позиционировать. Возможны и более извращенные варианты. Все-таки, рассказал бы о задаче? Тебе надо управлять каким-то конкретным приложением? Паинтом, или он выбран случайно ради примера? Если да - то с какой целью (в смысле, просто кликать)? Работает ли твой способ, если да - что тебя в нем не устраивает?
PM MAIL   Вверх
RinOSpro
Дата 10.9.2010, 09:29 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(okkonst @  9.9.2010,  17:56 Найти цитируемый пост)
Все-таки, рассказал бы о задаче?

Задача абстрактная, в общем кликать по кординатам которы задаст пользователь. В частности может использоваться для клик-бота в игре.

Цитата(okkonst @  9.9.2010,  17:56 Найти цитируемый пост)
Кстати, ты так и не сказал, чем оно тебя не устраивает.

К примеру сижу я чем ни будь занимаюсь, и тут бац разворачивается окно и давай кликать.
У меня раньше такая проблема была с отправкой пользовательского ввода с клавиатуры но в этом случае я нашел решение:
http://delphiworld.narod.ru/base/keyboard_keys_down3.html, сейчас ищу такое же решение для мышки.

Цитата(okkonst @  9.9.2010,  17:56 Найти цитируемый пост)
Например, внутри может происходить считывание координат мыши (GetCursorPos) - тогда перед отправкой надо мышку правильно позиционировать.

Это я уже написал, мышка правильно позиционируется, расчитывает ClientRect.

Цитата(okkonst @  9.9.2010,  17:56 Найти цитируемый пост)
 Паинтом, или он выбран случайно ради примера?

Паинт выбран по тому что в нем хорошо видно куда я кликаю smile А вообще это может быть любое приложение.

Это сообщение отредактировал(а) RinOSpro - 10.9.2010, 09:30
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1802 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.