Hallo,
ist es möglich, auch bei einem Sperrbildschirm (Windows + L) die Tastatur abzufragen ?
In meinem Programm muss man 1 Sekunde F4 gedrückt halten, damit sich etwas bestimmtes ereignet.
Leider sperrt sich der Bildschirm nach 10 Minuten und ich muss mich dann erst einloggen, um die F4 zu drücken. Kann man das nicht auch im Sperrbildschirm abfragen ? Ich kann die Sperre nicht ändern, wurde vom Admin extra so eingerichtet. Was kann man tun, um die Tastatur dennoch abzufragen ?
Programm trotz Bildschirmsperre
Programm trotz Bildschirmsperre
PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
Re: Programm trotz Bildschirmsperre
Hi,
Hast du schon irgend etwas ausprobiert?
Ich habe es bis jetzt nur mit einem Low Level Hook hinbekommen....
Hast du schon irgend etwas ausprobiert?
Ich habe es bis jetzt nur mit einem Low Level Hook hinbekommen....
Code: Alles auswählen
Enumeration Window 1
#WND_Main
EndEnumeration
Enumeration Gadget 1
#GDT_btnClear
#GDT_lstOutput
EndEnumeration
Structure KEYBOARDHOOKSTRUCTURE
vkCode.l
scanCode.l
flags.l
time.l
dwExtraInfo.l
EndStructure
#WM_HOOKEDKEY = #WM_USER + 123
Global Hotkey_hWnd
; ---
Procedure Hotkey_KeyboardProc(nCode, wParam, *kb.KEYBOARDHOOKSTRUCTURE)
Static fMod = 0, vkCode = 0
If (nCode = #HC_ACTION And (wParam = #WM_KEYDOWN Or wParam = #WM_SYSKEYDOWN Or wParam = #WM_KEYUP Or wParam = #WM_SYSKEYUP))
PostMessage_(Hotkey_hWnd, #WM_HOOKEDKEY, *kb\vkCode, (wParam & 1)) ; here: send all keys to main loop
If *kb\vkCode = #VK_F4
; move the PostMessage_() to this position to send the F4 only !!!!
ProcedureReturn #True ;
EndIf
EndIf
ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam) ;:: hhk is ignored
EndProcedure
; ---
Procedure SetKeyboardHook(State)
Static hKeyboardHook = 0
If State = #False ;:: unhook
If hKeyboardHook
UnhookWindowsHookEx_(hKeyboardHook)
hKeyboardHook = 0
EndIf
ElseIf State = #True ;:: hook
If hKeyboardHook
UnhookWindowsHookEx_(hKeyboardHook)
EndIf
hKeyboardHook = SetWindowsHookEx_(#WH_KEYBOARD_LL, @Hotkey_KeyboardProc(), GetModuleHandle_(0), 0)
EndIf
EndProcedure
; ---
Procedure Main()
Protected fHook, dbg.s
If OpenWindow(#WND_Main, 40, 40, 600, 300, "Low Level Hook", #PB_Window_SystemMenu)
Hotkey_hWnd = WindowID(#WND_Main)
ButtonGadget(#GDT_btnClear, 8, 4, 96, 24, "Clear")
ListViewGadget(#GDT_lstOutput, 8, 32, 584, 260, $4000)
PostEvent(#PB_Event_Gadget, #WND_Main, #GDT_btnClear)
SetKeyboardHook(#True)
Repeat
Select WaitWindowEvent()
Case #WM_HOOKEDKEY
dbg = "Hook Key Info: "
If EventwParam() = #VK_F4
dbg + "F4 "
Else
dbg + "KEY 0x" + Hex(EventwParam()) + " ("+ Str(EventwParam()) +") "
EndIf
If EventlParam()
dbg + "released"
Else
dbg + "pressed"
EndIf
AddGadgetItem(#GDT_lstOutput, -1, dbg)
SetGadgetState(#GDT_lstOutput, CountGadgetItems(#GDT_lstOutput) - 1)
Case #PB_Event_Gadget
Select EventGadget()
Case #GDT_btnClear
ClearGadgetItems(#GDT_lstOutput)
AddGadgetItem(#GDT_lstOutput, -1, "Press F4 on Lock Screen .... :) ")
EndSelect
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver
SetKeyboardHook(#False) ;:: do not forget to unhook :)
EndIf
ProcedureReturn 0
EndProcedure
End Main()
Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
Re: Programm trotz Bildschirmsperre
Ich danke dir !!!!
Genau das ist es. Habe es etwas an meinen Kram angepasst, aber genau das habe ich gesucht !!!!! Vielen Dank

Genau das ist es. Habe es etwas an meinen Kram angepasst, aber genau das habe ich gesucht !!!!! Vielen Dank

PB 6.10LTs / Windows 11 64Bit (i9/32GB/ 1TB-SSD+4TB-HDD/3060GTX12GB) / 2x27" Multitouch
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !
... ich mache dazu keine Aussage, weil ich mich damit selbst belasten könnte !