Автоматизация ввода с клавиатуры

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by hnur, 16 Jun 2014.

  1. hnur

    hnur New Member

    Joined:
    29 Dec 2006
    Messages:
    8
    Likes Received:
    0
    Reputations:
    0
    Возможно существуют готовые решения, буду благодарен за информацию.

    Необходимо написать приложение которое будет перехватывать нажатие комбинации одной-двух заданных клавиш на клавиатуре.
    После отжатие одной или обеих клавиш необходимо что бы приложение в ответ, кратковременно через указанный промежуток времени сэмулировала нажатие другой комбинаций клавиш.
    Пример: Пользователь зажал клавиши "A" и "S", далее он отпускает одну или обе зажатых клавиш - в ответ программа эмулирует нажатие (с заданной продолжительностью) двух других клавиш "W" и "D".
     
  2. Alexandr II

    Alexandr II -=ImperatoR=-

    Joined:
    28 Dec 2007
    Messages:
    1,067
    Likes Received:
    670
    Reputations:
    87
    это чтоб в игры не играл?)))
     
  3. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Если программа под Windows, то в системе есть API функция SendInput

    Ей передается указатель на массив структур INPUT
    Code:
    INPUT input_key[2];
    
    input_key[0].type=INPUT_KEYBOARD;
    input_key[0].ki.dwFlags=0;
    input_key[0].ki.wVk=VK_F11;
    
    input_key[1].type=INPUT_KEYBOARD;
    input_key[1].ki.dwFlags=KEYEVENTF_KEYUP;
    input_key[1].ki.wVk=VK_F11;
    
    SendInput(2,(LPINPUT)&input_key[0],sizeof(INPUT));
    
    это пример нажатия клавиши F11

    Для таймеров есть функция CreateTimerQueueTimer, но в твоем случае подойдет и просто Sleep.
    По поводу перехвата клавиатуры стандартный метод это хуки
     
    _________________________
    #3 Gar|k, 18 Jun 2014
    Last edited: 19 Jun 2014
  4. vinosh

    vinosh Member

    Joined:
    29 Oct 2011
    Messages:
    72
    Likes Received:
    15
    Reputations:
    5
    Autoit тебе точно понравится))
    Функции: sethotkey() и send()