WinAPI blokada klawiszy

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.

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.

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

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'

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()?

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

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")

0

Na te pytanie nie znam odpowiedzi, ale à propos 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

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