![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
первый вопрос: двойной клик отсылается мышью или получается соединением двух одинарных?
если второе, то: - какая функция за это отвечает? - каким способом можно перехватить сообщения до преобразования их в двойной клик? |
|
|
![]()
Сообщение
#2
|
|
![]() strange thing Сообщений: 2 586 Спасибо сказали: 94 раза ![]() |
банально потыркавшись в настройках мыши, можно увидеть таймаут на даблклик
-------------------- anyway the wind blows...
|
|
|
![]()
Сообщение
#3
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
ну мне не удалось уловить момент преобразованию двух одинарных кликов, поэтому я предположил самый абсурдный вариант (двойной клик посылается от мыши).
ты лучше ответь где двойной клик образуется и как это перехватить |
|
|
Гость_FakerNeo_* |
![]()
Сообщение
#4
|
![]() |
LBN_DBLCLK
Добавлено ([mergetime]1210966859[/mergetime]): В процедуре окна перехватывается данное сообщение и если например .... cmp uMsg, LBN_DBLCLC jz NEXT или if uMsg=LBN_DBLCLC then только до этого нужно проверить хендл окна на котором нажата кнопка это WM_COMMAND, перехватіваешь данное сообщение и в wParam (вроде или в lParam) окна возвращается хендл окна на котором нажата клавиша мыши Добавлено ([mergetime]1210967414[/mergetime]): хотя в принципе если тебе нужен просто двойной клик, то можно и не уточнять окно. А если тебе нужно перехватить хендл в отладчике. То в ОЛЕ, например можно поставить брэйк на сообщение о двойном клике для любого окна Добавлено ([mergetime]1210967490[/mergetime]): //А если тебе нужно перехватить хендл А если тебе нужно перехватить сообщение |
|
|
![]()
Сообщение
#5
|
|
![]() Immortal Сообщений: 1 137 Спасибо сказали: 269 раз ![]() |
Ага, под винду на ассемблере.
![]() По-моему, дабл-клик приходит вместо второго клика, и эту замену делает система, если у класса окна установлен соответствующий стиль (CS_DOUBLECLICK). То есть, в некотором смысле, действительно мышь. Хотя, тут лучше посмотреть, можно залогить сообщения прямо в WinMain (или где вызывается GetMessage), потому что преобразование может происходить, скажем, и в TranslateMessage или тому подобное. -------------------- ![]() |
|
|
![]()
Сообщение
#6
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
Берс уже обьяснил мне что это заложено в драйвера и перехватить клики до их замены невозможно стандартными способами.
А какой кусок кода в стандартных драйверах отвечает за это преобразование? |
|
|
![]()
Сообщение
#7
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата Берс уже обьяснил мне что это заложено в драйвера и перехватить клики до их замены невозможно стандартными способами. А что ты сделать-то хотел ? -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#8
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
хотел из двух последовательных одинарных кликов получить один (а точнее установить нижнюю границу для скорости двойного клика)
|
|
|
![]()
Сообщение
#9
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
Цитата(gamecreator @ 17 May 2008, 15:59) хотел из двух последовательных одинарных кликов получить один (а точнее установить нижнюю границу для скорости двойного клика) В своем окне или вообще ? -------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#10
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
вообще
Добавлено ([mergetime]1211127083[/mergetime]): нашел тут одну фишку - инвертирует мышь с помощью перехвата драйверов. но она только под 9х ![]() |
|
|
Гость_FakerNeo_* |
![]()
Сообщение
#11
|
![]() |
Описание:
function SetDoubleClickTime(Count: Word); Добавлено ([mergetime]1211181044[/mergetime]): или Изменяй значение в HKEY_CURRENT_USER\Control Panel\Mouse\DoubleClickSpeed значение. |
|
|
![]()
Сообщение
#12
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
Цитата(FakerNeo @ 19 May 2008, 11:10) Описание: function SetDoubleClickTime(Count: Word); ты снова не в теме. мне нужно установить нижнюю границу, а не верхнюю. |
|
|
![]()
Сообщение
#13
|
|
![]() Immortal Сообщений: 1 137 Спасибо сказали: 269 раз ![]() |
Что-то типа коррекции дребезга? То есть когда одно нажатие воспринимается системой как несколько последовательных.
Для клавиатуры есть подобная настройка в Accessibility (FilterKeys), для мыши не видно. Как делаешь, через SetWindowsHook? -------------------- ![]() |
|
|
![]()
Сообщение
#14
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
типа того. но вроде проблема в мыши, а не в системе
ага, но он не может отловить одиночные щелчки до преобразования |
|
|
![]()
Сообщение
#15
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
как перехватить запись в файл?
|
|
|
![]()
Сообщение
#16
|
|
![]() •●Revolucionario●• Сообщений: 2 467 Спасибо сказали: 5936 раз ![]() |
-------------------- life MOV.I #life+1, *life
האם יש זמן לעצור ? |
|
|
![]()
Сообщение
#17
|
|
![]() Оранжевый Канцлер Тьмы Сообщений: 2 344 Спасибо сказали: 618 раз ![]() |
Чтобы перехватить запись в файл, надо написать драйвер для файловой системы, позволяющий это сделать. Например, потырь где-нибудь исходники filemon и посмотри, как это сделано там. Обычными хуками WinAPI конкретно момент записи в файл не перехватить.
-------------------- I am the fury in your eyes. I am reason, I am vice.
Careful what you say You may regret it, Careful what you wish You just might get it. |
|
|
![]()
Сообщение
#18
|
|
![]() Яблочный произвол! Сообщений: 11 080 Спасибо сказали: 3988 раз ![]() |
я вот думаю: если подменить функцию дос, то это сработает?
|
|
|
Гость_Aнгeл_* |
![]() ![]()
Сообщение
#19
|
![]() |
Цитата Обычными хуками WinAPI конкретно момент записи в файл не перехватить. Обычно это осуществляется много проще inject-ом своей dll во все загруженные процессы и перехватом функции WriteFile. Используя функции ToolHelp32 перебираются хэндлы всем процессов и в адресное пространство каждого загружается своя dll через CreateRemoteThread, которая затем и сделает перехват нужных функций. Можно ещё перехватить и все CreateProcess, WinExec, чтобы не было такого, что программа успеет что-нибудь записать ДО внедрения DLL. У меня есть пример на Делфи с перехватом все MessageBox-ов. |
|
|
![]()
Сообщение
#20
|
|
good news, everyone! Сообщений: 918 Спасибо сказали: 93 раза ![]() |
поделись, lizachaikinaсобакаgmail.com
-------------------- этъя опять
|
|
|
![]() ![]() |
Текстовая версия | Сейчас: 6 October 2025 - 19:06 |
Copyright by Алексей Крючков
![]() Programming by Degtyarev Dmitry |
|