Symulacja wciśniętego przycisku.

0

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;                                                                             
}
1

Ja w tym kodzie nie widzę czegokolwiek związanego z klikaniem w przyciski.

Ogólnie to jeśli chcesz wysłać input do jakiegoś okna, to to okno musi być aktywne. Przykłady symulowania wciśnięć klawiszy (na różne sposoby) znajdują się np. w tym wątku. Oczywiście wątków i tutoriali jest znacznie więcej – click!

0

Dzięki za pomoc :) Poradzilem sobie. Kod wstawię potem gdy będę na kompie

1 użytkowników online, w tym zalogowanych: 0, gości: 1