![]() |
STRG+ESC ... Sperren (Hooks?)
Hi, ich weis was jetzt gleich kommt, benutz die Suchfunktion, aber ich habe jetzt mindestens ne halbe stunde gesucht und nix brauchbares dazu gefunden.
Ich will STRG+ESC u.ä. sperren (STRG+ALT+ENTF ist hinfällig, da ich Win XP mit dem neuen design benutze und da einfach den tasgmanager gesperrt hab). Ich weis, dass das mit hooks funktioniert, ich hatte auch mal einen, allerdings für c++ wäre nett wenn ihr mir helfen könntet mfg quizzmaster |
Re: STRG+ESC ... Sperren (Hooks?)
|
Re: STRG+ESC ... Sperren (Hooks?)
Danke, das hilft mir schon sehr weiter, nur bräucht ich noch einen anhaltspunkt, was ich im quelltext der dll dazuschreiben muss, damit ALT+TAB auch nicht mehr geht, der rest ist da ja schon drinne
|
Re: STRG+ESC ... Sperren (Hooks?)
Hat das irgend einen Grund warum du das machen willst? Denn dem Benutzer den Taskmanager sperren ist nicht gerade sehr schön. Microsoft hat sich schon was dabei gedacht, dass man Strg+Alt+Entf nicht so einfach sperren kann. Ist ungefähr so, als wenn du aus einem Zug alle Notbremsen ausbaust.
|
Re: STRG+ESC ... Sperren (Hooks?)
@Luckie: Irgendwie musste ich grinsen... Nahezu das selbe hast du auch mal zu mir gesagt :)
Ich brauchte das ebenfalls mal und habe daraus diese DLL gemacht: (kA woher ich das hatte)
Delphi-Quellcode:
library Project1;
uses Windows, Messages, SysUtils, Registry; var g_hHookKbdLL: HHOOK = 0; g_hHookKbd: HHOOK = 0; HookHandle: Cardinal = 0; WindowHandle: Cardinal = 0; const WH_KEYBOARD_LL = 13; LLKHF_ALTDOWN = 32; WM_HOOKMESSAGEID = WM_USER + 7328; type KBDLLHOOKSTRUCT = record vkCode: DWORD; scanCode: DWORD; flags: DWORD; time: DWORD; dwExtraInfo: DWORD; end; PKBDLLHOOKSTRUCT = ^KBDLLHOOKSTRUCT; function MyTaskKeyHookLL(nCode: Integer; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; var pkh: PKBDLLHOOKSTRUCT; bCtrlKeyDown: BOOL; begin pkh:=PKBDLLHOOKSTRUCT(lp); if nCode=HC_ACTION then begin bCtrlKeyDown := GetAsyncKeyState(VK_CONTROL) shr ((sizeof(SHORT) * 8) - 1)<>0; // Ctrl+Esc if ((pkh^.vkCode=VK_ESCAPE) and bCtrlKeyDown) or // Alt+F4 ((pkh^.vkCode=VK_F4) and (pkh^.flags and LLKHF_ALTDOWN=LLKHF_ALTDOWN)) or // Alt+TAB ((pkh^.vkCode=VK_TAB) and (pkh^.flags and LLKHF_ALTDOWN=LLKHF_ALTDOWN)) or // Alt+Esc ((pkh^.vkCode=VK_ESCAPE) and (pkh^.flags and LLKHF_ALTDOWN=LLKHF_ALTDOWN)) or // Start Menu ((pkh^.vkCode=VK_LWIN) or (pkh^.vkCode=VK_RWIN)) then begin result:=1; exit; end; end; result:=CallNextHookEx(g_hHookKbdLL, nCode, wp, lp); end; function KeyboardHookProc(nCode: Integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; begin Result := CallNextHookEx(HookHandle, nCode, wParam, lParam); case nCode < 0 of TRUE: exit; FALSE: Postmessage(WindowHandle,WM_HOOKMESSAGEID,0,0); end; end; function DisableTaskKeys(bDisable: bool): bool; stdcall; begin if bDisable then begin if g_hHookKbdLL=0 then g_hHookKbdLL := SetWindowsHookEx(WH_KEYBOARD_LL, MyTaskKeyHookLL, HInstance, 0); end else if g_hHookKbdLL<>0 then begin UnhookWindowsHookEx(g_hHookKbdLL); g_hHookKbdLL := 0; end; result:=g_hHookKbdLL<>0; end; function EnableKeyboardCheck(HWND: Cardinal; Activate: Boolean): boolean; stdcall; begin if Activate = TRUE then begin Result := False; if HookHandle = 0 then begin HookHandle := SetWindowsHookEx(WH_KEYBOARD_LL, @KeyboardHookProc, HInstance, 0); WindowHandle := Hwnd; Result := TRUE; end; end else begin Result := UnhookWindowsHookEx(HookHandle); HookHandle := 0; end; end; exports DisableTaskKeys, EnableKeyboardCheck; begin end. |
Re: STRG+ESC ... Sperren (Hooks?)
Da muss ich jetzt auch mal grinsen :D
@Luckie: Wenn ihr alle wisst wie das geht, warum kommt sowas nicht mal in die FAQ, dann können interesierte da einfach schauen und das für ihre zwecke nutzen. Ich brauche das für einen Presentationsbrowser der am Tag der offenen Tür an meiner Schule eingesetzt werden soll und die kleinen Kinder und die Eltern nicht irgendwas anderes an den Rechnern machen sollen. Das Strg+Alt+Entf nicht zu sperren geht ist mir klar, das brauch ich jetzt auch nicht so unbedingt, mir reicht schon wenn ich abmelden und herunterfahren sperren kann, Die tastenkombinationen stehen hier und taskmanager hab ich auch schon gefunden. |
Re: STRG+ESC ... Sperren (Hooks?)
gibts da eigentlich auch eine Variante ohne DLL?
weil für einen kleinen presentations browser möchte ich eigentlich nur ungerne eine dll benutzen. |
Re: STRG+ESC ... Sperren (Hooks?)
Soweit ich weiß geht das nicht ohne DLL ;-)
|
Re: STRG+ESC ... Sperren (Hooks?)
[SprachGammel]
Ohne Dll wird das nix... (weil wegen Globaler Hook) PS: Taskmanager kann man recht einfach Sperren: 1. TM mit SW_HIDE starten wenn er nicht schon läuft (sonst auf SW_Hide stellen) 2. Komischen TM TrayIcon weg machen... der TM läuft zwar aber kann man so ohne weiteres nix mit machen... und da man die Karre nur einmal starten kann = Gewonnen [/SprachGammel] Greetz Boombuler Edit: Sprachgammel Tags hinzugefügt |
Re: STRG+ESC ... Sperren (Hooks?)
|
Re: STRG+ESC ... Sperren (Hooks?)
Taskmanager kannste ganz einfach mit einem Registry-key auschalten :), kannst ja nen pw-butten machen, um ihn wieder reinzuhaun, oder einfach en andere Prog
Müsste nachher mal gucken, wegen der Funktion |
Re: STRG+ESC ... Sperren (Hooks?)
Ich hätte jetzt nur noch eine Frage: Wie benutze ich die Funktionen aus der DLL?
Ich binde die Statisch ein, dass ist mir alles klar, nur wie muss ich was aufrufen zum Sperren bzw. Entsperren? |
Re: STRG+ESC ... Sperren (Hooks?)
ist DisableTaskKeys zum deaktivieren und EnableKeyboardCheck zum aktivieren?
ich probiers gleich mal aus, weil ich den pc dann eh ausmach, wenn die tasten net mehr gehen sollten :D |
Re: STRG+ESC ... Sperren (Hooks?)
Zitat:
![]() bzw: ![]() |
Re: STRG+ESC ... Sperren (Hooks?)
Ahh, das ist doch mal was schönes :D
Ich verstehs nur nicht so ganz, da die Hilfe auf Englisch ist und ich da nicht allzugut bin, muss mir das mal in Ruhe durchlesen. Das ist ein ersatz der GINA. Wie muss ich das dann einbinden? P.S.: Ich hab jetzt auch rausgefunden wie ich die DLL benutzen kann, die oben steht |
Re: STRG+ESC ... Sperren (Hooks?)
Schreib mir mal ne Mail, ich kann dir bei Details dann jederzeit helfen. Die Hilfe ist deshalb in Englisch, weil die meisten Admins das können und ich mir die Arbeit nicht zweimal machen will (Pflege mehrsprachiger Hilfedateien).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz