Forum: Win32/Win64 API (native code)
by hesch21,
13. Sep 2012
Mach ich ja! Schau Dir mal den zweiten Codeteil in meinem ersten Post an. Dort ist testeshalber einfach 'Default' drin, weil ich den Hook im Thread nicht zum laufen gebracht habe, aber jetzt habe ich das natürlich längst wieder auf 'Screen-Saver' geändert.
Forum: Win32/Win64 API (native code)
by hesch21,
12. Sep 2012
Sorry, bin etwas unter Druck!
ja, ich hab's getestet, leider ohne Erfolg. Auch mit expliziten Admin-Rechten klappt's nicht immer. Und dann bin ich noch auf einen Screen-Blanker (allerdings nicht von Microsoft) gestossen, der knallt irgendwie gleich mal alles ab, was auf WinSta0\Screen-Saver läuft, sobald er sich selbst beendet. Ganz hässlich. Aber so langsam komme ich zum Schluss, dass ich...
Forum: Win32/Win64 API (native code)
by hesch21,
10. Sep 2012
Das Programm, welches den Hook setzt, wird von einem Dienst über CreateProcessAsUser gestartet. Von da müssten die Rechte eigentlich genügen, zumal der Bildschirmschoner selbst im Normalfall unter dem angemeldeten Benutzer läuft. Mein Programm kann ich ja auf dem Screen-Saver-Desktop starten und das läuft dort problemlos, nur eben der Hook nicht. Eigentlich glaube ich kaum, dass der Hook nur...
Forum: Win32/Win64 API (native code)
by hesch21,
10. Sep 2012
Ja, eigentlich hast Du schon recht, aber ich habe den Thread ja wie bereits erwähnt testeshalber einfach ganz bösartig ausgebremst, indem ich im Thread selbst ein WaitFor auf den Thread gesetzt habe. Der wird nie fertig und drum geht das.
Wie gesagt, das ganze war nur für Testzwecke und inzwischen habe ich leider feststellen müssen, dass auch das nichts hilft, um auf WinSta0\Screen-Saver...
Forum: Win32/Win64 API (native code)
by hesch21,
10. Sep 2012
Dämlich, dämlich!
So wie ich das gemacht habe, wird der Thread ausgeführt und sofort wieder beendet. Und damit halt auch der Hook. Ein JvThread1.WaitFor; hat Abhilfe gebracht und jetzt funktionierts.
Jetzt kann ich dahinter, auszuprobieren, ob's auch auf Screen-Saver-Ebene klappt.
Danke für die Unterstützung!
Forum: Win32/Win64 API (native code)
by hesch21,
10. Sep 2012
In der erwähnten Rountine zum 'Abschiessen' des Screen-Savers verwende ich die Komponente wie folgt:
procedure TForm1.BLKillerExecute(Sender: TObject; Params: Pointer);
var hDeskWnd : HDESK;
var Inp : TInput;
begin
hDeskWnd := OpenDesktop('Screen-saver', 0, false, MAXIMUM_ALLOWED);
if hDeskWnd <> 0 then
begin
if SetThreadDesktop(hDeskWnd) then
begin
Forum: Win32/Win64 API (native code)
by hesch21,
10. Sep 2012
Die CallBack-Funktion fängt nur die Tastenkombination PageUp/PageDown ab. Deshalb TCode1 := 34 und TCode2 := 33.
Hier der Code:
{Abhandeln von Tasteneingaben}
function CallBackDelHook(Code:Integer; wParam:WPARAM; lParam:LPARAM): LRESULT; stdcall;
var SendStr : string;
begin
if code = HC_ACTION then
begin
if (wParam = WM_KEYDOWN) and (Zwei = 0) then
begin