SendInput () Буквы клавиатуры C / C ++ - PullRequest
10 голосов
/ 20 июня 2009

Я пытаюсь использовать SendInput(), чтобы отправить предложение в другое приложение (Блокнот), а затем отправить его, нажав клавишу Ввод .

Какие-нибудь фрагменты кода? Или помогите

Ответы [ 4 ]

7 голосов
/ 06 ноября 2013
INPUT input;
WORD vkey = VK_F12; // see link below
input.type = INPUT_KEYBOARD;
input.ki.wScan = MapVirtualKey(vkey, MAPVK_VK_TO_VSC);
input.ki.time = 0;
input.ki.dwExtraInfo = 0;
input.ki.wVk = vkey;
input.ki.dwFlags = 0; // there is no KEYEVENTF_KEYDOWN
SendInput(1, &input, sizeof(INPUT));

input.ki.dwFlags = KEYEVENTF_KEYUP;
SendInput(1, &input, sizeof(INPUT));

Список кодов виртуальных ключей .....

1 голос
/ 09 декабря 2016

Я внес изменения после прочтения кода @ Натана, этой ссылки и в сочетании с предложением @ jave.web. Этот код можно использовать для ввода символов (как прописных, так и строчных).

#define WINVER 0x0500
#include<windows.h>
void pressKeyB(char mK)
{
    HKL kbl = GetKeyboardLayout(0);
    INPUT ip;
    ip.type = INPUT_KEYBOARD;
    ip.ki.time = 0;
    ip.ki.dwFlags = KEYEVENTF_UNICODE;
    if ((int)mK<65 && (int)mK>90) //for lowercase
    {
        ip.ki.wScan = 0;
        ip.ki.wVk = VkKeyScanEx( mK, kbl );
    }
    else //for uppercase
    {
        ip.ki.wScan = mK;
        ip.ki.wVk = 0;

    }
    ip.ki.dwExtraInfo = 0;
    SendInput(1, &ip, sizeof(INPUT));
}

Ниже приведена функция нажатия клавиши возврата:

    void pressEnter()
{
    INPUT ip;
    ip.type = INPUT_KEYBOARD;
    ip.ki.time = 0;
    ip.ki.dwFlags = KEYEVENTF_UNICODE;
    ip.ki.wScan = VK_RETURN; //VK_RETURN is the code of Return key
    ip.ki.wVk = 0;

    ip.ki.dwExtraInfo = 0;
    SendInput(1, &ip, sizeof(INPUT));

}
1 голос
/ 20 июня 2009

Функция SendInput принимает массив структур INPUT. Структуры INPUT могут быть событием мыши или клавиатуры. структура событий клавиатуры имеет член wVk, который может быть любой клавишей на клавиатуре. Заголовочный файл Winuser.h содержит определения макросов (VK_ *) для каждого ключа.

0 голосов
/ 20 марта 2010

Здесь простой пример C ++ http://nibuthomas.wordpress.com/2009/08/04/how-to-use-sendinput/

И более полный образец VB здесь http://vb.mvps.org/samples/SendInput/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...