I want my program to lock the screen. Here I took the code to lock the keyboard
unit mklu; interface uses Windows; var m_OldMHook: HHook = 0; k_OldKBHook: HHook = 0; function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; procedure KeyBoardOn; procedure KeyBoardOff; function MouseHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; procedure MOUSEON; procedure MouseOff; implementation function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; begin if code < 0 then Result := CallNextHookEx(k_oldKbHook, code, wparam, lparam) else Result := 1; end; // Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²Ρ procedure KeyBoardOn; begin if k_OldKbHook <> 0 then begin UnHookWindowshookEx(k_OldKbHook); k_OldKbHook := 0; end; end; // Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°Π²Ρ procedure KeyBoardOff; begin k_OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0); end; function MouseHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall; begin if code < 0 then Result := CallNextHookEx(m_oldMHook, code, wparam, lparam) else Result := 1; end; // Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΡΡΠΊΠΈ procedure MOUSEON; begin if m_OldMHook <> 0 then begin UnHookWindowshookEx(m_OldMHook); m_OldMHook := 0; end; end; // Π²ΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΡΡΠΊΠΈ procedure MouseOff; begin m_OldMHook := SetWindowsHookEx(WH_MOUSE, @MOUSEHook, HInstance, 0); end; end. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: uses mklu; {Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°(LockIt = true) ΠΈΠ»ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°(LockIt= False) ΠΊΠ»Π°Π²Ρ} procedure LockUnlockKeyboard(LockIt: Boolean); begin if LockIt then KeyBoardOFF else KeyBoardOn; end; {Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°(LockIt = true) ΠΈΠ»ΠΈ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°(LockIt= False) ΠΌΡΡΠΊΠΈ} procedure LockUnlockMouse(LockIt: Boolean); begin if LockIt then MouseOff else MouseOn; end;
It works fine on Windows XP, and on Windows 7 for some reason it does not plow ... What is the problem?