Конференция "WinAPI" » Определение физического нажатия кнопки мыши
 
  • Woolf76 © (10.07.13 01:24) [0]
    Стоит задача определить на Delphi было ли реальное нажатие кнопки мыши или же это была эмуляция. В какую сторону хоть копать?
  • Германн © (10.07.13 01:34) [1]
    А нажатие кнопки на татчпаде или прикосновение пальца к сенсорному экрану и т.д. и т.п. к какому варианту отнести?
  • Woolf76 © (10.07.13 01:45) [2]
    К эмуляции конечно ) Меня интересует именно физическая мышь и кнопка на ней. Цель - заблокировать любого рода эмуляцию, будь то тачпад, сенсорный экран или же программа-эмулятор.
  • bems © (10.07.13 03:14) [3]
    например поставить хук WH_MOUSE_LL
    если у мышиного сообщения нет соответствующего вызова процедуры хука то это эмуляция посылкой мышиных сообщений. Если есть вызов хука но MSLLHOOKSTRUCT.flags содержит LLMHF_INJECTED то это эмуляция через SendInput или аналоги. Иначе событие действительно пришло от мышиного драйвера, но нет гарантии что какой-нить драйвер не сэмулировал его в ядре
  • brother © (10.07.13 03:19) [4]
    100% гарантии нет...
  • Германн © (10.07.13 03:59) [5]

    > bems ©   (10.07.13 03:14) [3]

    Не проверял, но имхо татчпад и другие подобные устройства от мыши таким способом не отличить.
  • Павиа (10.07.13 08:07) [6]
    Провод от кнопки мыши вешаешь на ком порт и опрашиваеш его переодически.
  • Павиа (10.07.13 08:07) [7]
    Провод от кнопки мыши вешаешь на ком порт и опрашиваеш его переодически.
  • Woolf76 © (10.07.13 12:59) [8]
    А если мышь ps/2 или usb ?
  • Woolf76 © (10.07.13 13:01) [9]
    > например поставить хук WH_MOUSE_LL

    Попробовал, ничем не отличается нажатие кнопки мыши и использование "клавиатурной мыши" из комплекта "Ограниченные возможности".
  • bems © (10.07.13 15:54) [10]

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


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

    да. идеального решения тут не существует
  • brother © (10.07.13 18:56) [11]
    > Цель - заблокировать любого рода эмуляцию, будь то тачпад,
    > сенсорный экран или же программа-эмулятор.

    устанешь блокировать 100%
  • robt5 (11.07.13 10:53) [12]
    сакральный вопрос - а нафига?
  • Woolf76 © (11.07.13 13:46) [13]
    >сакральный вопрос - а нафига?
    Выявить в онлайн-игре тех, кто использует бота-автоматизатора для игры. Да и вообще не дать ему возможность кликать кнопки мыши в игре.
  • han_malign (11.07.13 14:19) [14]
    - если в HAL не закапываться:
    DirectInput
    HID API

    в качестве параноидальной полумеры можно подпись драйвера проверять(хотябы на WHQL)...
  • robt5 (11.07.13 17:28) [15]

    > кто использует бота-автоматизатора

    какбэ есть мыши с макросами, их ты никакими средствами не перехватишь
  • Woolf76 © (14.07.13 16:10) [16]
    >какбэ есть мыши с макросами, их ты никакими средствами не перехватишь
    Решено уже, перехват сделан.
  • Inovet © (14.07.13 16:33) [17]
    > [16] Woolf76 ©   (14.07.13 16:10)

    Как это?
  • robt5 (14.07.13 17:20) [18]

    > Как это?

    просто написал для отмазы, в стиле "вы все ламеры"
  • brother © (15.07.13 02:30) [19]
    код бы посмотреть...
  • Woolf76 © (18.07.13 14:28) [20]
    GetAsyncKeyState берет данные напрямую от драйвера клавиатуры/мыши
  • Woolf76 © (18.07.13 14:30) [21]
    Конечно, и его сэмулировать можно, но придется писать свои драйвера для мыши. А обычные сообщения окну о нажатии кнопок оно игнорирует.
  • Inovet © (18.07.13 14:59) [22]
    > [21] Woolf76 ©   (18.07.13 14:30)

    Ты написал, что отловил макросы, соврал, значит. Мышки-то программируются из из своих нутрей уже шлют нужные последовательности нажатий. Так что - задача отлова нерадивых игроков не решена.
 
Конференция "WinAPI" » Определение физического нажатия кнопки мыши
Есть новые Нет новых   [119107   +102][b:0][p:0.001]