Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

О виртуальной мыши   Найти похожие ветки 

 
Сергей М. ©   (2010-04-14 13:39) [0]

Пусть имеется простецкая задачка - записать и впоследствии воспроизвести последовательность мышиных событий с полноценной штатной визуализацией мышиного курсора.

При воспроизведении ранее записанной последовательности рассматривается вариант инжектирования эмулируемых событий с использованием интерфейса mouse_event().

Предположим что этот вариант устраивает всем кроме того что он "выхватывает" мышь из рук юзера, который вправе в момент воспроизведения использовать реальный мышиный ввод-вывод по своему усмотрению, одновременно с виртуальным вводом/выводом под управлением инжектируемых "плейером" событий.

Возникает довольно очевидная идея - на момент воспроизведения программно инсталлировать в систему некий дополнительный виртуальный мышиный дивайс и дать возможность "плейеру" управлять им программно, тем самым никак не затрагивая очереди ввода-вывода основного мышиного дивайса.

Подкиньте, пож., толковые идеи на эту тему ?

Изобретать велосипед с собственной разработкой этого слоя, полагаю, нет резона - наверняка существуют готовые фриварные реализации ..

А может все гораздо проще и я полез в дебри ?)


 
Игорь Шевченко ©   (2010-04-14 13:42) [1]


> А может все гораздо проще


WH_JOURNALHOOK/WH_JOURNALPLAYBACK ?


 
Сергей М. ©   (2010-04-14 13:46) [2]


> Игорь Шевченко ©   (14.04.10 13:42) [1]


И как журнальный плейбэк может помочь в вопросе о "невыхватывании мыши" из рук юзера ?

Ведь требуется не только инжектировать мышиный ввод, но и визуализировать положение курсора ..


 
Anatoly Podgoretsky ©   (2010-04-14 13:47) [3]


> Предположим что этот вариант устраивает всем кроме того
> что он "выхватывает" мышь из рук юзера, который вправе в
> момент воспроизведения использовать реальный мышиный ввод-
> вывод по своему усмотрению, одновременно с виртуальным вводом/выводом
> под управлением инжектируемых "плейером" событий.

Не вправе, фокус ввода один на все мышки и функции.


 
brother ©   (2010-04-14 13:50) [4]

я так понимаю, это надо для того, чтобы юзверь не помешал действиям? Если да, то как вариант - отключить драйвер мыши на момент работы...


 
Сергей М. ©   (2010-04-14 13:55) [5]


> brother ©   (14.04.10 13:50) [4]


Это равносильно выхватыванию мыши из его рук ..


> Anatoly Podgoretsky ©   (14.04.10 13:47) [3]


> Не вправе


Почему не вправе ?
Юзер вправе как минимум подвести мышь к кнопуле "Stop playback" и клацнцть ее, не так ли ?
Варианты про хоткей как костыль пока не рассматриваю)


 
Сергей М. ©   (2010-04-14 13:58) [6]


> Anatoly Podgoretsky ©   (14.04.10 13:47) [3]


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


 
brother ©   (2010-04-14 13:58) [7]

> Это равносильно выхватыванию мыши из его рук ..

правильно, ибо если он кликнет или еще что, то твой "плеер" - "пролетает")


 
Anatoly Podgoretsky ©   (2010-04-14 14:00) [8]

> Сергей М.  (14.04.2010 13:55:05)  [5]

Вот это вправе, но подвести одной мышкой к одной кнопке и в тоже время другой мышкой к кнопке два не получится.


 
Сергей М. ©   (2010-04-14 14:00) [9]


> brother ©   (14.04.10 13:58) [7]


А это уже проблемы юзера: не елозь и не тыкай когда и куда не следует, пока идет плейбэк ..
Детали ограничений - в справке к программулине)


 
brother ©   (2010-04-14 14:01) [10]

> у каждой свой курсор и обе не мешают

О_О подрубил вотрую мышь ща... один курсор...


 
Anatoly Podgoretsky ©   (2010-04-14 14:01) [11]

> Сергей М.  (14.04.2010 13:58:06)  [6]

Ну не надо про свой курсор, как раз наоборот курсор общий.


 
brother ©   (2010-04-14 14:01) [12]

винда - однопользовательская система, так что, либо автоматика, либо юзветь...


 
Сергей М. ©   (2010-04-14 14:06) [13]


> Anatoly Podgoretsky ©   (14.04.10 14:01) [11]


Хочешь сказать что развести юзера и плейер по разным углам таким образом не удастся ?


 
brother ©   (2010-04-14 14:06) [14]

> что развести юзера и плейер по разным углам таким образом
> не удастся ?

[12]


 
brother ©   (2010-04-14 14:09) [15]

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


 
brother ©   (2010-04-14 14:10) [16]

> Изобретать велосипед с собственной разработкой этого слоя,
> полагаю, нет резона

похоже самое время ;)


 
Anatoly Podgoretsky ©   (2010-04-14 14:11) [17]

[3]
В виндоус одна логическая мышка, независимо от количества физических. Развести можно если написать свои драйвера и все необходимое для рисования и обработки от разных мышей, такое есть в некоторых играх.


 
Сергей М. ©   (2010-04-14 14:11) [18]


> brother ©   (14.04.10 14:09) [15]


> но это пиииии


Вот именно.
Так же как имитировать изображение отдельного курсора там где в дан.момент требует плейер ..


 
Сергей М. ©   (2010-04-14 14:13) [19]


> Anatoly Podgoretsky ©   (14.04.10 14:11) [17]


> Развести можно если написать свои драйвера


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


 
brother ©   (2010-04-14 14:15) [20]

> Вот это меня и интересует,

нет не то... в винде может быть только один актиный контрл? думаем далее...


 
Игорь Шевченко ©   (2010-04-14 14:16) [21]

Курсор точно один и обе мыши за него воюют. Потому что обе мыши ставят свои события в одну системную очередь аппаратного ввода, которую разруливает RIT. А mouse_event проходит мимо этой очереди сразу к RIT, наколько я помню, а тот уже его направляет нужному потоку.


 
brother ©   (2010-04-14 14:19) [22]

> такое есть в некоторых играх.

заметье учитывая [20] у игры одно ативное окно ;)


 
Сергей М. ©   (2010-04-14 14:23) [23]


> Игорь Шевченко ©   (14.04.10 14:16) [21]


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


 
brother ©   (2010-04-14 14:24) [24]

> в любой секунд найдется окно, потенциально возжелавшее быть
> сверху

блин...(


 
Игорь Шевченко ©   (2010-04-14 14:32) [25]

Сергей М. ©   (14.04.10 14:23) [23]

А кто курсор рисует ? Мне казалось, что RIT, обрабатывая очередь системных событий


 
brother ©   (2010-04-14 14:34) [26]

Скажите мне, а как Вы 2а активных окна делать будете?


 
Сергей М. ©   (2010-04-14 14:35) [27]


> Игорь Шевченко ©   (14.04.10 14:32) [25]


Так я и не возражаю что он самый и рисует ..
Но от этого ж не легче)
Или ты намекаешь на гипотетическую возможность внедриться в RIT-механизм и изменить его поведение нужным образом ?


 
Eraser ©   (2010-04-14 14:36) [28]

> [23] Сергей М. ©   (14.04.10 14:23)


> потенциально возжелавшее быть сверху, так ?)

по таймеру делат окно выше других каждую секунду. для данной ситуации этого хватит через глаза, imho.


 
brother ©   (2010-04-14 14:38) [29]

меня не слышно?


 
Сергей М. ©   (2010-04-14 14:39) [30]


> Eraser ©   (14.04.10 14:36) [28]


Ну с таймером понятно - костыль он и есть костыль)


 
Сергей М. ©   (2010-04-14 14:40) [31]


> brother ©   (14.04.10 14:38) [29]


А оно зачем - два активных окна ?


 
brother ©   (2010-04-14 14:42) [32]

в общем если:
> А это уже проблемы юзера: не елозь и не тыкай когда и куда
> не следует, пока идет плейбэк ..
> Детали ограничений - в справке к программулине)

то лучше [4] это гарантирует правильный реплей...


 
brother ©   (2010-04-14 14:44) [33]

> А оно зачем - два активных окна ?


> Не вправе, фокус ввода один на все мышки и функции.

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


 
Anatoly Podgoretsky ©   (2010-04-14 14:46) [34]

> brother  (14.04.2010 14:19:22)  [22]

В играх часто используются свои курсоры и прямой доступ к оборудованию DirectPlay


 
Сергей М. ©   (2010-04-14 14:47) [35]


> brother ©   (14.04.10 14:44) [33]


> если юзверь потенциально может нарушить работу реплея


Говорю же - это его, юзверя, проблемы) ..
Об этом он, очевидно, должен быть предупрежден в сопровод.док-ции к программулине)


 
brother ©   (2010-04-14 14:51) [36]

> и прямой доступ к оборудованию DirectPlay

не есть суть, главное

> фокус ввода один


 
Anatoly Podgoretsky ©   (2010-04-14 14:52) [37]

> Сергей М.  (14.04.2010 14:47:35)  [35]

Не обязательно, пусть на своей шкуре изучает, как работать.


 
Anatoly Podgoretsky ©   (2010-04-14 14:54) [38]

> brother  (14.04.2010 14:51:36)  [36]

Так в игре так и есть, одна картинка на весь экран и фокус ввода тоже один, на весь экран, плюс координаты тыканья и известно от какого устройства пришел тык или движение.


 
Сергей М. ©   (2010-04-14 14:54) [39]


> Anatoly Podgoretsky ©   (14.04.10 14:52) [37]


Нет ну я, конечно, согласен что проблемы индейцев шерифа не волнуют, но ..


 
Anatoly Podgoretsky ©   (2010-04-14 15:00) [40]

Вот пусть и канает.



Страницы: 1 2 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.065 c
15-1269419887
begemot
2010-03-24 11:38
2010.08.27
Как гос.организации приобрести DELPHI?


15-1270758602
Юрий
2010-04-09 00:30
2010.08.27
С днем рождения ! 9 апреля 2010 пятница


2-1274871683
AbdreyZAA
2010-05-26 15:01
2010.08.27
Как узнать заряд каждой батареии?


2-1273729075
tippa
2010-05-13 09:37
2010.08.27
грабер емайл


9-1187679377
wsaenotsock
2007-08-21 10:56
2010.08.27
проблема SetDisplayMode