Имитация действий юзера

Тема в разделе "WASM.BEGINNERS", создана пользователем warsem, 10 окт 2009.

  1. warsem

    warsem Сеня

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    170
    Адрес:
    Германия, NRW
    Задача у меня следущая: имитацией клавы и мыши управлять программкой.
    Долгое время использовал банальный AutoIt и бед не знал.

    Но с новой версией программы это не канает, т.к. при запуске она что-то там мастерит с виндой и ни какие АРI не помогают.
    Пробовал все знакомые мне API.

    Создавал топик тут уже. Советовали писать драйвер. Уже больше месяца разбираюсь с уроками Four-F'a и по прежнему борюсь с экранами смерти, не понимая зачастую причину их появления.

    Вообщем то вопрос у меня следующий: может есть уже готовые утилиты или библиотеки, которые рулили бы клавой и мышкой под ринг0?

    P.S.: хоть какой то выход, что бы не углублятца в ринг0 для простой манипуляцией над прогой.
     
  2. warsem

    warsem Сеня

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    170
    Адрес:
    Германия, NRW
    Не получив другого решения, продолжаю попытки написания драйвера.
    Нагуглил следущее: D2 - Write keyboard buffer. The keyboard controller returns the next value sent to port 60h as though a keypress produced that value. (PS/2 only).
    Из-за скудных знаний инглиша и отсутствия русскоязычной инфы возник вопрос:
    Достаточно ли этого, что бы система думала, что юзер нажал клавишу с кодом Х?
    Код (Text):
    1. mov al,0D2h
    2. out 64h,al
    3. mov al,[b]X[/b]
    4. out 60h,al
     
  3. warsem

    warsem Сеня

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    170
    Адрес:
    Германия, NRW
    данный кусочек кода находитца в обработчике драйвера IOCTL_SEND_KEY
     
  4. warsem

    warsem Сеня

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    170
    Адрес:
    Германия, NRW
    Добрые люди, скажите что не так? В асе смотрел, параметр получаю верный, но при тесте CapsLock(58h) лампочка не загораетца.
    Код (Text):
    1.     .if [edi].Parameters.DeviceIoControl.IoControlCode == IOCTL_SEND_KEY
    2.         mov edx,[esi].AssociatedIrp.SystemBuffer
    3.         mov edx,[edx]
    4.  
    5.         mov al,0D2h
    6.         out 64h,al
    7.         mov al,dl
    8.         out 60h,al
    9.  
    10.         mov status, STATUS_SUCCESS
    11.     .endif
    з.ы.: ощущение, что сам с собой говорю:dntknw: Я как то не правильно спрашиваю может? или может еще чет? Вы скажите.
     
  5. warsem

    warsem Сеня

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    170
    Адрес:
    Германия, NRW
    Гугль и Иисус в углу лучшие собеседники:)
    Нашел и скопипастил решение.

    з.ы.: Теперь осталось научитца двигать и шелкать мышкой.