Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];

Вниз

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

 
Сергей М. ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.257 c
2-1275245281
Semen
2010-05-30 22:48
2010.08.27
Поиск и открытие файлов


15-1274270972
Cerberus
2010-05-19 16:09
2010.08.27
Практика в EPAM.


15-1269950611
AlexDan
2010-03-30 16:03
2010.08.27
Зона ru и паспорт


15-1268248494
кот
2010-03-10 22:14
2010.08.27
как прочитать ПЗУ через параллельный порт


15-1265194467
зодиак
2010-02-03 13:54
2010.08.27
Странный метод





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский