Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Эмуляция второй мыши

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую.
 
Есть скрытая форма; на форме - компоненты (кнопки и др. элементы упр-я).
Можно ли эмулировать вторую мышку (не физическую), чтобы жать кнопки и элементы управления на скрытой форме, не затрагивая реальную мышь, которой работает юзер? Команды второй мышке будут идти не от юзера, а программно - по своему алгоритму.
Ну, и само собой, вторая мышь не должна показываться юзеру, пока скрыта форма.
 
Спасибо.

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 05:51 07-01-2016 | Исправлено: jek1976, 13:24 07-01-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Язык-то хоть какой ?
 
Похоже, у вас код событийно-ориентированный, так что "эмулировать вторую мышку" - это слишком сильное утверждение. Скорее всего, вам достаточно "по своему алгоритму" вызывать обработчики событий нажатия на кнопки невидимой формы.  
 
Ну и вообще, если форма не видна всегда, а её обработчики вызываются только программно, это всё - довольно странная конструкция.
Звучит так, будто вы начали изучать среду разработки но ещё не прочитали ни одной книжки по используемому языку.

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 21:19 07-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ахаха. ))) Не прочитал, говорите..? )))  
Хорошая новогодняя шутка. )
 
 
Код, в целом - событийный. Но если бы мне нужно было вызывать эвенты для "нажатия" (на самом деле, эмуляции нажатий) на кнопки скрытой формы, то я бы не отнимал время у уважаемых форумчан. ))
 
KDPoid, нет, я не говорил про то, что форма будет всегда не видна. Речь шла о том, чтобы она не показывалась рядовому юзеру, ибо вовсе не нужна ему. Она будет скрытой, оставляя свою иконку в трее, а проявляться будет при щелчке на иконке в трее и вводе пароля авторизованным для этого человеком (в целях защиты от шаловливых юзеров). Ну, и само собой, управление будет по сети (клиент-сервер). Здесь-то ничего сложно как раз и нет. )
 
 
Мне надо эмулировать указатель мыши и давить на контролы именно им, т.к. форма с контролами и работа указателя мыши - это две отдельно выполняющиеся задачи.
 
P.S. Это клиент-серверное приложение. Всё написанное выше относится к клиентской части, экземпляры которой будут работать на машинах в лаборатории. И если бы не разный персонал, работающий на них, то возиться с сокрытием формы и мыши - не потребоваось бы. С серверной частью таких извратов не будет, т.к. она будет развернута на моей отдельной машине.
Если нужны подробности работы - опишу. Но думаю, что куча ненужных деталей еще больше отодвинет решение моего вопроса. )
 
 
P.P.S. Подумалось насчет "виртуальных рабочих столов" в винде, может быть, клиентскую часть можно вынести в такой рабочий стол? Но похоже, мышь у них будет одна и та же... Хз.
 
Спасибо.

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 22:45 07-01-2016 | Исправлено: jek1976, 22:51 07-01-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Язык вы так и не указали...
 
Т.е. есть клиентское приложение. Часть функционала на отдельной форме рядовому пользователю не видна. Но вы хотите, чтобы другое приложение нажимало кнопки на этой скрытой форме ? Так ?
 
Вы уверены, что это самый простой способ добиться того, что вам нужно ?
 
Нажимание на невидимые кнопки - это часть удалённого управления клиентом со стороны сервера ? Или водитель виртуальной мышки - это третье приложение, не сервер, и находится на стороне клиента ?
 
Если внешнее приложение должно вызвать какие-то действия в клиенте...
Т.е. оно должно послать в клиента сообщение, а клиенту его надо обработать...
Тогда, зачем упираться в WM_MOUSExxx ?
Может быть, просто посылать WM_USER+<что-нибудь>, котор[ое|ые] обрабатывать в клиенте ?

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 23:30 07-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Язык - VB6.
 

Цитата:
Т.е. есть клиентское приложение. Часть функционала на отдельной форме рядовому пользователю не видна. Но вы хотите, чтобы другое приложение нажимало кнопки на этой скрытой форме ? Так ?  

Да, только есть уточнение: в норме, весь GUI, т.е. весь функционал клиента, полностью скрыт. На форме клиента будет расположен контрол браузера (типового IE-шного, скорее всего). Клики "мышкой" будут предназначаться для элементов загруженной браузером веб-страницы (гиперссылок и полос прокрутки).
 
Про отсылку WM-сообщений приложению - я уже думал, это очевидный вариант. Но здесь две засады:
1) сообщения не всегда корректно доходят до оконной функции приложения-клиента,
2) скрипты на веб-странице не отрабатываются корректно.
 
Поэтому я и заморочился с идеей эмуляции второй мыши.

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 03:32 08-01-2016 | Исправлено: jek1976, 03:51 08-01-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На VB6 ничего больше 1000 строк не писал, дома у меня его нет, так что всё дальнейшее - только предположения, проверить не могу.
 
Вы хотите на скрытой форме расположить контрол браузера, который загрузит страницу, а потом потыкать в неё виртуальной мышкой ?
 
1.
Если говорить об эмуляции мыши от самого начала, есть mouse_event():
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx
Но сутью мышиного события являются координаты. Оно происходит где-то на десктопе, координаты позволяют определить, к какому окну событие относится. Что-то мне подсказывает, что указать координаты внутри невидимого окна будет сложновато...
Так что, похоже, определение хэндла окна получателя придётся взять на себя, и посылать ему сообщение. По любому.
 
2.
Однажды, я видел похожий код на Delphi. Обёртка над IE, замысел автора: Загрузить страницу не отвлекая пользователя. Но IE не дурак, пока окно невидимо, страницу не грузило и скрипты на ней не выполняло. Невидимо - в широком смысле. Запомнил, потому что позабавили ухищрения. Окно видимо, но имеет нулевые размеры. Видимо и нормального размера, но сдвинуто за пределы десктопа. Компонент устоял против любых попыток заставить его заняться бессмысленной работой. Нет видимой области - незачем работать
 
Может быть, ваши проблемы связаны не со странной работой сообщений, а с ожиданием, что отработает скрипт на невидимой странице ?
 
Если цель - как-то работать со страницей в браузере, пока он невидим, то, наверное, стоит подумать о самостоятельных GET и POST запросах.
 
 

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 08:52 08-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Вы хотите на скрытой форме расположить контрол браузера, который загрузит страницу, а потом потыкать в неё виртуальной мышкой ?  

Да. И курсор мышки тоже должен быть скрыт.
Важно, чтобы при щелчках виртуальной мыши не терялась модальность тех окон, с которыми работает юзер. Но похоже, что это обойти невозможно...
 
 

Цитата:
1.  
Если говорить об эмуляции мыши от самого начала, есть mouse_event():  
https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx  

Верно, но как быть со скриптами на загруженной веб-странице, которые отслеживают события мыши, скроллинг и т.д. - то есть, всё то, что делается мышью, а не в обход неё, используя отсылку WM-сообщений и т.д.?

Цитата:
Но сутью мышиного события являются координаты.

Не только. Не забывайте про скрипты. Они мне нужны. )))
Например, чтобы нажать кнопку на веб-странице, мне достаточно передать по ее hwnd WM-сообщение с координатами, НО тогда для страничного скрипта это будет выглядеть так, будто у юзера вдруг возник курсор мыши в точке нажатия и нажал его, а предшествующие этому события (скроллинг, остановки мыши) как будто и не существовали! Это будет непредсказуемо менять поведение самой страницы. Вот в этом вся фишка! Надо, чтобы воздействие на страницу происходило так, чтобы все скрипты на ней отлавливали свои эвенты, как будто от реальной мыши.

Цитата:
Может быть, ваши проблемы связаны не со странной работой сообщений, а с ожиданием, что отработает скрипт на невидимой странице ?

Да, парой строк выше я как раз об этом и отписался.
 
 

Цитата:
Так что, похоже, определение хэндла окна получателя придётся взять на себя, и посылать ему сообщение. По любому.

Тем не менее, подумаю и над этим.
 
 

Цитата:
Если цель - как-то работать со страницей в браузере, пока он невидим, то, наверное, стоит подумать о самостоятельных GET и POST запросах.

Нет. Эти два типа запросов - это прямая работа с сервером, генерирующим веб-страницы. В этом варианте мы вообще идем в обход страничных скриптов. Здесь 100% скрипты не сработают.
 

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 15:03 08-01-2016 | Исправлено: jek1976, 15:41 08-01-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Описание задачи напоминает: Я хочу чтобы вы подсказали как мне сделать B, ответ ТСу: может быть вам надо А, ТС - нет мне нужно B, затем идет длительное обсуждение, пока кто-нибудь не запостит решение A, ТС смотрит решение А и говорит, да мне так и надо было...

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 10:19 10-01-2016 | Исправлено: protoror, 10:20 10-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пжлста, озвучьте решение А.
Я его пока не увидел.

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 10:32 10-01-2016 | Исправлено: jek1976, 10:33 10-01-2016
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jek1976
Работа со страницей через DOM не подходит?

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 14:40 10-01-2016
Dunkeshu

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jek1976
Цитата:
Есть скрытая форма; на форме - компоненты (кнопки и др. элементы упр-я).  Можно ли эмулировать вторую мышку (не физическую), чтобы жать кнопки и элементы управления на скрытой форме, не затрагивая реальную мышь, которой работает юзер? Команды второй мышке будут идти не от юзера, а программно - по своему алгоритму.  Ну, и само собой, вторая мышь не должна показываться юзеру, пока скрыта форма.
ИМХО. Возможно Вам необходимо использовать клиентский доступ, например по аналогии: - "Что такое сеанс?" http://www.cyberforum.ru/windows/thread1247132.html

Всего записей: 621 | Зарегистр. 25-01-2010 | Отправлено: 05:43 11-01-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jek1976
Чтобы озвучить решение А нужно нормальное описание исходной задачи, а не того что якобы надо сделать.

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 11:35 11-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
Понятие "нормальности" - спорная вещь: каждый вкладывает в него что-то своё. Скорее всего, надо говорить о необходимой полноте и достаточной полноте описания исходной задачи. Если сразу наколотить полэкрана текста, изложив задачу в достаточной полноте, то мало у кого хватит терпения даже дочитать ее до конца, не говоря уже о том, чтобы что-то советовать. Увы, на форуме сотни таких мертвых тем с подробным описанием в первом посте.
 
Поэтому вначале я изложил свою проблему по минимуму, с необходимой полнотой описания:
Цитата:
Есть скрытая форма; на форме - компоненты (кнопки и др. элементы упр-я). Можно ли эмулировать вторую мышку (не физическую), чтобы жать кнопки и элементы управления на скрытой форме, не затрагивая реальную мышь, которой работает юзер? Команды второй мышке будут идти не от юзера, а программно - по своему алгоритму. Ну, и само собой, вторая мышь не должна показываться юзеру, пока скрыта форма.

Далее, по ветке мне задавали вопросы, я уточнял задачу.
Сообщите, пож-та, какие уточнения мне еще требуется сделать для того, чтобы вы тоже включились в дискуссию? Мне ценно любое мнение. Ведь вы всё равно заглядываете в мою ветку, значит, есть некий интерес, верно?
 
 
 
 
 
Добавлено:

Цитата:
Работа со страницей через DOM не подходит?

Спасибо. Разбираюсь с теорией.  
Если методами DOM удастся сделать так, что скрипты на загружаемых страницах примут все программные манипуляции со страницей (скроллинг, клики на ссылках, клики на менюшках для перехода по страницам внутри ресурса и т.д.) за действия реальной мышью, то это мне подойдет.

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 23:52 11-01-2016 | Исправлено: jek1976, 00:59 12-01-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jek1976
Мне просто непонятно зачем делать такую ересь

Цитата:
Есть скрытая форма; на форме - компоненты (кнопки и др. элементы упр-я). Можно ли эмулировать вторую мышку (не физическую), чтобы жать кнопки и элементы управления на скрытой форме, не затрагивая реальную мышь, которой работает юзер? Команды второй мышке будут идти не от юзера, а программно - по своему алгоритму. Ну, и само собой, вторая мышь не должна показываться юзеру, пока скрыта форма.
 

у вас нет причины, т.е. А, а есть только следствие якобы надуманного вами решения.

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 22:42 12-01-2016
exteris

Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Мне просто непонятно зачем делать такую ересь

ТС путается в показаниях, то у него скрытая форма, то уже браузер.  
Браузерного бота хочет что-ли...

Всего записей: 382 | Зарегистр. 14-04-2003 | Отправлено: 09:33 13-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
вам нужны причины? Если я скажу, что мне софт нужен для работы - такая причина вас устроит? Тем более, я уже упоминал об этом, выше.
А вообще, под "А" вы понимали совсем другое, а именно, кем-то якобы предложенное мне решение. После этого я попросил вас показать. где и что мне было предложено, но вы этого так и не сделали до сих пор. Конкретных вопросов вы тоже не задаете. Высказываете только лишь одни недовольства, как пенсионер в ельцинские времена.
Наша переписка открыта, видно, кто и что пишет. Не так ли?
 
 
 
exteris
нет, это лишь следствие вашего беглого прочтения.
Хотя бы почитайте внимательнее и не передергивайте. Было сказано и про форму и про веб-компонент на ней.

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 17:10 13-01-2016 | Исправлено: jek1976, 17:19 13-01-2016
protoror



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jek1976
Вы даже не понимаете что вам пишут...

Всего записей: 494 | Зарегистр. 23-11-2009 | Отправлено: 00:20 15-01-2016
jek1976



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
protoror
Я вас здесь насильно не держу. )
Четыре ваших поста - и все ни о чем...
Зачем тратите свое время?

Всего записей: 1057 | Зарегистр. 15-04-2005 | Отправлено: 02:43 19-01-2016 | Исправлено: jek1976, 02:49 19-01-2016
NeoAnomaly

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jek1976, а клиент и сервер - не ваша разработка, правильно? А назначение скриптов какое, Обработка каких-то введённых данных? Тогда наверное проще скрипты "реализовать" у себя, а дальше напрямую к серверу (get/post), т.е. реализовать своего полноценного клиента, потому как ваше направление со скрытыми формами и эмуляцией нажатий - извращение ещё то, ИМХО

Всего записей: 418 | Зарегистр. 23-03-2010 | Отправлено: 07:31 19-01-2016 | Исправлено: NeoAnomaly, 07:33 19-01-2016
KDPoid



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NeoAnomaly,
Если бы не его разработка, то откуда уверенность, что экземпляр невидимого окна вообще существует ?
Думаю, что всё разрабатывается вместе, просто есть потребность выполнить скрипт на html странице, независимо от пользователя. Самому писать поддержку скриптов не хочется, есть надежда, что всё сделает какой-то стандартный компонент браузера, если будет думать, что в него ткнули мышкой.

Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 12:31 19-01-2016
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Эмуляция второй мыши


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru