Napotkałem dziś na dwa problemy. Pierwszy problem polega na braku konsekwencji kliknięcia przycisku przez funkcję SendInput()
. Prawdopodobnie chodzi o to, że program, który ma fokus klawiatury nie czyta tych wciśniętych przycisków i tutaj chciałbym dostać odpowiedź jak temu zapobiec. Przeczytałem dokumentacje z MSDN: https://docs.microsoft.com/en-us/windows/desktop/api/winuser/ns-winuser-tagkeybdinput ale mimo tego nie potrafię zrobić tak, aby program przechwytywał kliknięcia przez funkcje. Drugim problemem a raczej pytaniem to jak zrobić symulator wciśniętego przycisku. Poprzednia funkcja wysyła event z tym, że klawisz jest wciśnięty i może gdybym to wepchał w pętle by uszło ale jednak kusi zapytać czy jest taka możliwość. Tutaj mój kod:
#include "stdafx.h"
#include <Windows.h>
using namespace std;
int main()
{
ShowWindow(GetConsoleWindow(), SW_HIDE);
INPUT ip;
ip.type = INPUT_KEYBOARD;
ip.ki.wScan = 0;
ip.ki.time = 0;
ip.ki.dwExtraInfo = 0;
ip.ki.wVk = 0x41; // 'A'
ip.ki.dwFlags = 0;
while (true)
{
if (GetAsyncKeyState(VK_SHIFT))
{
SendInput(1, &ip, sizeof(INPUT));
Sleep(50);
}
}
//512,384
return 0;
}