Obługa wciśnięcia kilku klawiszy naraz

Odpowiedz Nowy wątek
2014-12-22 15:41
0

Witam
Jak przykładowo w konsolowym programie w C/C++ można obsługiwać wciśnięcie kilku klawiszy naraz. Piszę konsolowy programik i użytkownik (gdy okno jest otwarte w podmenu wybiera, żeby schować okno), lecz gdy okno jest schowane, chcę, aby za pomocą kombinacji klawiszy, np. ctrl + alt + delete lub Lctrl + Lshift + A okno się pokazywało z powrotem. W conio.h jest kbhit() i getchar(), ale to chyba działa tylko dla jednego klawisza i gdy okno jest widoczne. W windows.h jest chyba GetAsyncKeyState(), ale nie do końca kojarzę, jak to działa. Funkcja, która chowa i pokazuje okno (par mogłoby być chyba bool):

 void stealth(int par)
{
    HWND stealth;
    AllocConsole();
    stealth=FindWindowA("ConsoleWindowClass",NULL);
    ShowWindow(stealth, par); //par = 0 -> okno sie chowa
}

Pozdrawiam

edytowany 1x, ostatnio: LuIMi, 2014-12-22 17:19

Pozostało 580 znaków

2014-12-22 15:52
0
keystate = GetAsyncKeyState
using vk = Virtual Keys from http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731%28v=vs.85%29.aspx
if(keystate(vk(ctrl))+keystate(vk(alt))+keystate(vk(delete)))
    run_process_manager();
edytowany 1x, ostatnio: spartanPAGE, 2014-12-22 15:52

Pozostało 580 znaków

2014-12-22 16:06
0

Czyli jest to pseudokod? A w if(...) zamiast "+" ma być "&&"? Ale jak keystate może mieć kilka różnych wartości naraz? Możesz podać dokładny kod dla, np. lewy ctrl + lewy shift + A?

Pozostało 580 znaków

2014-12-22 16:09
LuIMi napisał(a):

Czyli jest to pseudokod? A w if(...) zamiast "+" ma być "&&"? Ale jak keystate może mieć kilka różnych wartości naraz? Możesz podać dokładny kod dla, np. lewy ctrl + lewy shift + A?

if(GetAsyncKeyState(VK_CONTROL)&&GetAsyncKeyState(VK_SHIFT)&&GetAsyncKeyState(0x41)) ..
W pętli while(1) jak na razie działa ładnie. Dziękuję ;) - LuIMi 2014-12-22 16:17

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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