@_JON_
Ich verstehe zwar das ganze englische Zeuchs nicht, aber wie ich UAC austrickse, ist mir bekannt.
Aber was nützt das auf einem Fremdrechner, wo ich eingeschränkte Rechte habe, und darum
geht es doch hier. Wahrscheinlich noch mit Domäne und Active Directory.
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Da es sich ja bei dem "SystemParametersInfo" um eine API handelt und auf dem eingeschränkten Rechner funktioniert, wollte ich auch die API "PowerSetActiveScheme" einmal ausprobieren.
Eine Mausbewegung zu produzieren um den Standby zu verhindern wollte ich vermeiden, da das "Gezappel" des Mauszeigers bei für manche Tätigkeiten ungeeignet ist.
Könnte mir trotzdem jemand einmal ein Beispiel geben für das "PowerSetActiveScheme".
; WICHTIG: Die Ausführungen werden nur verhindert, wenn das Programmfenster den Fokus hat
Procedure CBTProc(nCode, wParam, lParam)
If nCode = #HCBT_SYSCOMMAND
If wParam = #SC_MONITORPOWER
Select lParam
Case -1 ; Monitor will sich einschalten
; ProcedureReturn #True ; Ausführung ablehnen
Case 1 ; Monitor will in den Standby-Modus
ProcedureReturn #True ; Ausführung ablehnen
Case 2 ; Monitor will sich ausschalten
; ProcedureReturn #True ; Ausführung ablehnen
EndSelect
ElseIf wParam = #SC_SCREENSAVE ; Bildschirmschoner will sich starten
ProcedureReturn #True ; Ausführung ablehnen
EndIf
EndIf
ProcedureReturn CallNextHookEx_(0, nCode, wParam, lParam)
EndProcedure
Define Hook, Event
Hook = SetWindowsHookEx_(#WH_CBT, @CBTProc(), GetModuleHandle_(0), GetCurrentThreadId_())
If Hook = 0
Debug "Hook konnte nicht gesetzt werden"
EndIf
OpenWindow(0, 0, 0, 400, 400, "Monitor-Standby und Bildschirmschoner verhindern", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
UnhookWindowsHookEx_(Hook)
Beachte den Hinweis oben im Code. Vielleicht kann man diese Einschränkung vermeiden, wenn man die Hook-Procedure in einer DLL auslagert.