WinAPI blokada klawiszy

Odpowiedz Nowy wątek
2012-03-31 11:55

Rejestracja: 8 lat temu

Ostatnio: 5 lat temu

0

Witam,
Niedawno zacząłem moją przygodę z WinAPI. Z racji zbliżającej się daty 1.04 postanowiłem zrobić prosty kawał: program, który wyrzuca Blue Screen. Problem w tym, że używając skrótów (np Windows+D) można go zminimalizować lub wyłączyć menadżerem zadań. I tu moje pytanie: jak można zablokować klawiaturę, a przynajmniej skróty do menadżera plus te z Windowsem? (chyba wystarczy zablokować klawisze: Windows i Ctrl, tylko nie wiem jak). W googlach nic nie znalazłem.

Jak BSOD to tylko sterowniczek ;) - White_Rabbit 2012-03-31 13:34

Pozostało 580 znaków

2012-03-31 13:03

Rejestracja: 9 lat temu

Ostatnio: 3 tygodnie temu

0

Szukaj pod nazwą keyboard hook, te skróty musisz blokować niskopoziomowo. Jak chcesz wywalić bluescreena to możesz go przygotować w bmp, a później rysować w pętli na całym ekranie - zamykasz proces explorer.exe, później w tej samej pętli możesz sprawdzać czy nie pojawiło się okno managera zadań, jak tak to je zamykasz ;P. To taki sposób najszybszy, bardzo prosty :P.


non omnis moriar i tyle :-)
edytowany 1x, ostatnio: arasso12, 2012-03-31 13:04

Pozostało 580 znaków

2012-03-31 13:39
Administrator

Rejestracja: 8 lat temu

Ostatnio: 5 lat temu

0

Pomysł dobry, spróbuję, tylko co ze skrótami np. Windows+tab, alt+tab i innymi przełączającymi? próbowałem za pomocą hooków je blokować, ale i tak szły dalej wykonując pożądane zadanie

edytowany 2x, ostatnio: kajak4Cpp, 2012-03-31 13:41

Pozostało 580 znaków

msm
2012-03-31 14:55
msm

Rejestracja: 10 lat temu

Ostatnio: 1 dzień temu

0

Ctrl-Alt-Delete nie zablokujesz hookami bo jest obsługiwany dużo wcześniej (bodajże na poziomie Win32k.sys).

Poczytaj o 'HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system, DisableTaskMgr'

edytowany 1x, ostatnio: msm, 2012-03-31 14:55

Pozostało 580 znaków

2012-03-31 15:09

Rejestracja: 8 lat temu

Ostatnio: 5 lat temu

0

niestety nie jest możliwe, bym tak blokował Menadżera
Chyba by wystarczyło sprawdzanie w pętli, czy nie ma procesu "taskmgr.exe" i go wyłączać - działa skutecznie
Pytanie dodatkowe: jak uzyskać uchwyt do explorer.exe? Co trzeba wpisać do FindWindow()?

edytowany 1x, ostatnio: kajak4Cpp, 2012-03-31 15:22

Pozostało 580 znaków

msm
2012-03-31 15:23
msm
Administrator

Rejestracja: 10 lat temu

Ostatnio: 1 dzień temu

0

Pytanie dodatkowe: jak uzyskać uchwyt do explorer.exe? Google nie wie lub dobrze ukrył

Hmm? http://www.google.pl/search?q=get+process+handle

Pozostało 580 znaków

2012-03-31 16:15

Rejestracja: 8 lat temu

Ostatnio: 5 lat temu

0

dziękuję, działa poprawnie
właściwie ostatnia rzecz... jak, mając uchwyt przycisku "start", wywołać program po kliknięciu na niego? (to znaczy chodzi w tle, ale uaktywnia się po kliknięciu na "start")

Pozostało 580 znaków

2012-03-31 21:29

Rejestracja: 9 lat temu

Ostatnio: 3 tygodnie temu

0

Na te pytanie nie znam odpowiedzi, ale Apropo pytania wyżej: jeżeli byś rysował tą bitmapę ciągle w pętli na pobranym hdc pulpitu to nie ma znaczenia czy jakieś okno nowe się pojawi(manager zadan, cokolwiek) bo i tak zostanie zamalowane. Ew dla lepszego efektu możesz sprawdzac czy GetForegroundWindow()!=HWND_DESKTOP, jezeli true to EnableWindow(GetForegroundWindow(), FALSE). Sposób prymitywny, tak jak pisałem wcześniej, ale działa na 100% :P


non omnis moriar i tyle :-)
edytowany 1x, ostatnio: arasso12, 2012-03-31 21:30

Pozostało 580 znaków

Odpowiedz

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