|
|
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
Есть игра, в которой нужно крутить скролл. Мне нужно сделать так, что если я прокрутил скролл, то программа автоматически прокрутила еще N количество раз. Я сделал хук на скролл,и при его прокрутке хочу послать сообщение в окно игры, с повтором прокрутки. Пробовал Код: pascal 1. Но при прокрутки колеса, программа зависает намертво. Я думаю из-за того, что хук отлавливает как ручную прокрутку, так и Mouse_Event , и повторяет его бесконечно. По этому нужно что-то другое... Есть какие-то варианты у вас, как можно это сделать? Проще говоря, мне нужно иметь возможность удвоить или утроить прокрутку. Что бы в игре, 1 тик колеса мыши, ровнялся двум-трём и более. Прокрутил скролл, хук это понял и добавил еще 2-3-4 прокрута. Надеюсь внятно объяснил)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 08:56 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
Tech N9neЕсть игра, в которой нужно крутить скролл. Мне нужно сделать так, что если я прокрутил скролл, то программа автоматически прокрутила еще N количество раз. Я сделал хук на скролл,и при его прокрутке хочу послать сообщение в окно игры, с повтором прокрутки. Пробовал Код: pascal 1. Но при прокрутки колеса, программа зависает намертво. Я думаю из-за того, что хук отлавливает как ручную прокрутку, так и Mouse_Event , и повторяет его бесконечно. По этому нужно что-то другое... Есть какие-то варианты у вас, как можно это сделать? Проще говоря, мне нужно иметь возможность удвоить или утроить прокрутку. Что бы в игре, 1 тик колеса мыши, ровнялся двум-трём и более. Прокрутил скролл, хук это понял и добавил еще 2-3-4 прокрута. Надеюсь внятно объяснил)) так для этого не надо мышку имитировать. достаточно отловить один раз "прокрутку", а потом хоть по таймеру несколько раз повторить то действие, которое у тебя заложено в "прокрутку" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 10:14 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
defecatorтак для этого не надо мышку имитировать. достаточно отловить один раз "прокрутку", а потом хоть по таймеру несколько раз повторить то действие, которое у тебя заложено в "прокрутку" Я так понимаю, что "вертит" он чужую программу. По теме: можно попробовать реализовать флаг, что-то типа: Emulated: Boolean; (или через Event'ы, там же вроде может быть параллельная обработка?..) и в хуке делать что-то вроде: Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 10:33 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
Думаю, что счетчика хватит. По событию возводить его в 3 и пока не уменьшиться до 0 - не обрабатывать события скрола. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 10:55 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
wadmanДумаю, что счетчика хватит. По событию возводить его в 3 и пока не уменьшиться до 0 - не обрабатывать события скрола. Хотя нет... Наверное, можно использовать dwExtraInfo для определения, что событие "своё". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 10:58 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
alekcvpdefecatorтак для этого не надо мышку имитировать. достаточно отловить один раз "прокрутку", а потом хоть по таймеру несколько раз повторить то действие, которое у тебя заложено в "прокрутку" Я так понимаю, что "вертит" он чужую программу. По теме: можно попробовать реализовать флаг, что-то типа: Emulated: Boolean; (или через Event'ы, там же вроде может быть параллельная обработка?..) и в хуке делать что-то вроде: Код: pascal 1. 2. 3. 4. 5. 6. 7. Всё ровно залипает.. Если перевести фокус на браузер, всегда крутит вверх. Так как я покрутил скрол, хук начал делать своё действие, то-есть имитировать скролл... и потом он(хук) своё же действие(эмуляцию), принимает за действие пользователя и продолжает эмулировать. defecator, забиндил на кнопку действие, которое происходит по событию скролла. Пробовал keybd_event — но игра не реагирует. Postmessage аналогично. Только Sendmessage работает. Через него пытаюсь нажать клавишу клавы. Всё ок. Но если сделать несколько нажатий за раз, то в игре в этот момент лагает. к примеру так Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 11:29 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
Tech N9neВсё ровно залипает.. Если перевести фокус на браузер, всегда крутит вверх. Так как я покрутил скрол, хук начал делать своё действие, то-есть имитировать скролл... и потом он(хук) своё же действие(эмуляцию), принимает за действие пользователя и продолжает эмулировать. Так там как раз и смысл был в том, что флаг показывает - внешнее это действие или эмулированное. Надо просто найти как сделать, чтобы значение флага сохранялось между вызовами хука. Поэтому я и предполагал что, возможно, вместо переменной стоит использовать mutex (наверное он тут лучше подходит, чем event). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 13:48 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
alekcvpTech N9neВсё ровно залипает.. Если перевести фокус на браузер, всегда крутит вверх. Так как я покрутил скрол, хук начал делать своё действие, то-есть имитировать скролл... и потом он(хук) своё же действие(эмуляцию), принимает за действие пользователя и продолжает эмулировать. Так там как раз и смысл был в том, что флаг показывает - внешнее это действие или эмулированное. Надо просто найти как сделать, чтобы значение флага сохранялось между вызовами хука. Поэтому я и предполагал что, возможно, вместо переменной стоит использовать mutex (наверное он тут лучше подходит, чем event). я полный дилетант...) не мог бы ты чутка разжевать ?)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2018, 16:20 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
alekcvp Код: pascal 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2018, 10:34 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
Tech N9neя полный дилетант...) не мог бы ты чутка разжевать ?)) Могу только посоветовать почитать документацию на функции CreateMutex(), OpenMutex() и ReleaseMutex(). Писать приложение с хуками только для примера мне лень, вот честно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2018, 10:52 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
alekcvpTech N9neя полный дилетант...) не мог бы ты чутка разжевать ?)) Могу только посоветовать почитать документацию на функции CreateMutex(), OpenMutex() и ReleaseMutex(). Писать приложение с хуками только для примера мне лень, вот честно. Ну для начала хватит) отпишусь если будут сложности, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2018, 11:33 |
|
||
|
Посоветуйте, что можно сделать (scroll)
|
|||
|---|---|---|---|
|
#18+
Mouse_Event(MOUSEEVENTF_WHEEL, 0, 0, 120, 0); Хм... 1 тик скролла, это 120, верно? когда руками крутишь скролл, получается 120 я хуком отлавливаю 120, и дополнительно эмитирую 12 1 таким образом дополнительная прокрутка срабатывает, как в винде, так и в игре. Мне нужно добиться максимально точной паузы, между дополнительными прокрутками. Пример крутанули скролл на 1 тик пауза (мс) эмуляция скролла пауза (мс) эмуляция скролла пауза (мс) для паузы я использую Slpeep(); но в игре тормозит, если ставить больше 15 мсек собсно вопрос, как сделать, что бы паузы работали не тормозили игру? подозреваю, что это из-за хука. Но паузу нужно реализовать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.12.2018, 20:03 |
|
||
|
|

start [/forum/search_topic.php?author=bober22&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 643ms |
| total: | 792ms |

| 0 / 0 |
