Droopy´s Lib muss installiert sein.
Code: Alles auswählen
;* Verwendete Libs: Droopy´s Lib*
OpenLibrary(1,"kernel32.dll")
CallFunction(1,"RegisterServiceProcess", GetCurrentProcessID_(), 1 )
CloseLibrary(1)
Structure KBDLLHOOKSTRUCT
vkCode.l
scanCode.l
flags.l
time.l
dwExtraInfo.l
EndStructure
Global hook
;-Keyboard Hook um Tastatur Ereignisse abzufangen
Procedure.l myKeyboardHook(nCode, wParam, *p.KBDLLHOOKSTRUCT)
If nCode = #HC_ACTION
If wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN Or wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP
#LLKHF_ALTDOWN = $20
If ((*p\vkCode = #VK_TAB) And (*p\flags & #LLKHF_ALTDOWN)) Or ((*p\vkCode = #VK_F4) And (*p\flags & #LLKHF_ALTDOWN)) Or ((*p\vkCode = #VK_ESCAPE) And (*p\flags & #LLKHF_ALTDOWN)) Or ((*p\vkCode & #VK_ESCAPE) And (GetKeyState_(#VK_CONTROL) & $8000)) ;Or
ProcedureReturn 1
ElseIf (*p\vkCode = #VK_LWIN) Or (*p\vkCode = #VK_RWIN)
ProcedureReturn 1
EndIf
EndIf
EndIf
;beep_(800,1)
ProcedureReturn CallNextHookEx_(hook, nCode, wParam, lParam)
EndProcedure
;-
;-Prozedure aus dem Codearchiv
Procedure SendKeys(Handle,window$,keys$)
If window$<>"" : Handle=FindWindow_(0,window$) : EndIf ; Use window$ instead of handle.
If IsWindow_(Handle)=0 ; Does the target window actually exist?
ProcedureReturn 0 ; Nope, so report 0 for failure to type.
Else
; This block gives the target window the focus before typing.
thread1=GetWindowThreadProcessID_(GetForegroundWindow_(),0)
thread2=GetWindowThreadProcessID_(Handle,0)
If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#True) : EndIf
SetForegroundWindow_(Handle) ; Target window now has the focus for typing.
Delay(125) ; 1/8 second pause before typing, to prevent fast CPU problems.
; Now the actual typing starts.
For r=1 To Len(keys$)
vk$=Mid(keys$,r,1)
If vk$="{" ; Special key found.
s=FindString(keys$,"}",r+1)-(r+1) ; Get length of special key.
s$=Mid(keys$,r+1,s) ; Get special key name.
Select s$ ; Get virtual key code of special key.
Case "ALTDOWN" : keybd_event_(#VK_MENU,0,0,0) ; Hold ALT down.
Case "ALTUP" : keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT.
Case "BACKSPACE" : vk=#VK_BACK
Case "CONTROLDOWN" : keybd_event_(#VK_CONTROL,0,0,0) ; Hold CONTROL down.
Case "CONTROLUP" : keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL.
Case "DELETE" : vk=#VK_DELETE
Case "DOWN" : vk=#VK_DOWN
Case "END" : vk=#VK_END
Case "ENTER" : vk=#VK_RETURN
Case "F1" : vk=#VK_F1
Case "F2" : vk=#VK_F2
Case "F3" : vk=#VK_F3
Case "F4" : vk=#VK_F4
Case "F5" : vk=#VK_F5
Case "F6" : vk=#VK_F6
Case "F7" : vk=#VK_F7
Case "F8" : vk=#VK_F8
Case "F9" : vk=#VK_F9
Case "F10" : vk=#VK_F10
Case "F11" : vk=#VK_F11
Case "F12" : vk=#VK_F12
Case "ESCAPE" : vk=#VK_ESCAPE
Case "HOME" : vk=#VK_HOME
Case "INSERT" : vk=#VK_INSERT
Case "LEFT" : vk=#VK_LEFT
Case "PAGEDOWN" : vk=#VK_NEXT
Case "PAGEUP" : vk=#VK_PRIOR
Case "PRINTSCREEN" : vk=#VK_SNAPSHOT
Case "RETURN" : vk=#VK_RETURN
Case "RIGHT" : vk=#VK_RIGHT
Case "SHIFTDOWN" : shifted=1 : keybd_event_(#VK_SHIFT,0,0,0) ; Hold SHIFT down.
Case "SHIFTUP" : shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT.
Case "TAB" : vk=#VK_TAB
Case "UP" : vk=#VK_UP
EndSelect
If Left(s$,3)<>"ALT" And Left(s$,7)<>"CONTROL" And Left(s$,5)<>"SHIFT"
keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the special key.
EndIf
r=r+s+1 ; Continue getting the keystrokes that follow the special key.
Else
vk=VkKeyScanEx_(Asc(vk$),GetKeyboardLayout_(0)) ; Normal key found.
If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,0,0) : EndIf ; Due to shifted character.
keybd_event_(vk,0,0,0) : keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key.
If vk>304 And shifted=0 : keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) : EndIf ; Due to shifted character.
EndIf
Next
If thread1<>thread2 : AttachThreadInput_(thread1,thread2,#False) : EndIf ; Finished typing to target window!
keybd_event_(#VK_MENU,0,#KEYEVENTF_KEYUP,0) ; Release ALT key if user forgot.
keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0) ; Release CONTROL key if user forgot.
keybd_event_(#VK_SHIFT,0,#KEYEVENTF_KEYUP,0) ; Release SHIFT key if user forgot.
ProcedureReturn 1 ; Report successful typing! :)
EndIf
EndProcedure
;-------
;-Konstanten
Enumeration
#window
#igad
#img1
#Textgad
#Stringgad
;--gadgets
EndEnumeration
foc=0
;-Image einbinden
lockimage=CatchImage(#img1,?pic)
taskbarHandle=FindWindow_("Shell_TrayWnd","")
;-Desktop Höhe+Breite
Ergebnis = ExamineDesktops()
Deskw=DesktopWidth(0)
Deskh= DesktopHeight(0)
;--
If OSVersion()=#PB_OS_Windows_2000 Or OSVersion()=#PB_OS_Windows_XP Or OSVersion()=#PB_OS_Windows_Future
Else
MessageRequester("Meldung","Das Program ist nur unter den folgenden Windowsversionen lauffähig->2000,xp,Vista",#MB_ICONWARNING)
End
EndIf
;-Bestätigung ausschalten
;-Taskleiste aus
ShowWindow_(taskbarHandle,0)
;------Taskmanager ausschalten
If RegKeyExists("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM",".")
Else
RegCreateKey("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM",".")
EndIf
If RegValueExists("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr",".")
RegSetValue("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr","1",#REG_DWORD,".")
Else
RegCreateKeyValue("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr","1",#REG_DWORD,".")
EndIf
;----------
;-hook2
#WH_KEYBOARD_LL = 13
hook = SetWindowsHookEx_(#WH_KEYBOARD_LL,@myKeyboardHook(),GetModuleHandle_(0),0)
;--
If OpenWindow(#window,0,0,Deskw,Deskh,"",#PB_Window_BorderLess)
SetWindowPos_(WindowID(#window),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE);Fenster in den Vordergrund setzen
If CreateGadgetList(WindowID(#window))
ImageGadget(#igad,0,0,Deskw,Deskh,lockimage)
StringGadget(#Stringgad,Deskw/2-80,Deskh/2-10,100,20,"Passwort Eingabe" )
SetParent_(GadgetID(#Stringgad),GadgetID(#igad))
EndIf
EndIf
;-Hauptschleife
Repeat
Event=WaitWindowEvent()
;-Fenster im Vordergrund halten
SetActiveWindow_(WindowID(#window))
SetWindowPos_(WindowID(#window),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE)
SetFocus_(GadgetID(#Stringgad))
;---------------------------
EventType=EventType()
GadgetID=EventGadget()
;--Falls versucht wurde den Taskmanager aufzurufen
hMsgBox = FindWindow_("#32770","Task-Manager")
If hMsgBox
SetForegroundWindow_( hMsgBox)
SendKeys(hMsgBox,"","{ENTER}");-Messagerequester automatisch bestätigen.
EndIf
;-------------------
;--
If Event=#PB_Event_Gadget
If GadgetID=#Stringgad And EventType=#PB_EventType_Change And GetFocus_()=GadgetID(#Stringgad)
If foc=0
SetGadgetText(#Stringgad,"")
foc=1
Else
;-Alles Rückgängig machen
If GetGadgetText(#Stringgad)="1417"
HideWindow(#window,1)
For a=0 To 20
hMsgBox = FindWindow_("#32770","Task-Manager")
If hMsgBox
SetForegroundWindow_( hMsgBox)
SendKeys(hMsgBox,"","{ENTER}");-Messagerequester automatisch bestätigen.
EndIf
Next a
RegSetValue("HKEY_CURRENT_USER\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\SYSTEM","DisableTaskMgr","0",#REG_DWORD,".")
;-Taskleiste an
ShowWindow_(taskbarHandle,1)
UnhookWindowsHookEx_(hook)
End
EndIf
;---------
EndIf
EndIf
EndIf
Until EventType=#PB_EventType_RightDoubleClick
End
;-Datasection
DataSection
pic:
IncludeBinary "LockScreen.bmp"
EndDataSection