AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hook aus Service

Ein Thema von hesch21 · begonnen am 15. Mai 2012 · letzter Beitrag vom 29. Mai 2012
 
hesch21

Registriert seit: 31. Aug 2004
Ort: Basel
114 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: Hook aus Service

  Alt 16. Mai 2012, 11:16
Habe gesehen, dass eigentlich die HookOn-Procedure auch in einer abgespeckten Version noch gleichermassen funktioniert:
Code:
procedure HookOn ; stdcall;
var hWinStaUser : HWINSTA;
var hUInputDT   : HDESK;
begin
 hWinStaUser := OpenWindowStation('WinSta0', FALSE, MAXIMUM_ALLOWED);
 if (SetProcessWindowStation(hWinStaUser)) then
    begin
    hUInputDT := OpenInputDesktop(0, False, MAXIMUM_ALLOWED);
    if (SetThreadDesktop(hUInputDT)) then
       begin
       HookTastatur := SetWindowsHookEx(WH_KEYBOARD_LL, @CallBackDelHook, HInstance , 0);
       Writelog('Hook gesetzt');
       end
    else
       Writelog('Hook nicht gesetzt');
    end;
end;
Aber das Problem bleibt dasselbe: Der SetThreadDesktop funktioniert nur einmal. Und inzwischen habe ich auch herausgefunden, weshalb: Bei Microsoft ist noch folgende Korrektur zu finden:
Zitat:
errata
"The SetThreadDesktop function will fail if the calling thread has any windows or hooks on its current desktop"

This is understated. SetThreadDesktop will fail if the calling thread has ever had a window or hook on its current desktop.
Nun meine Frage: Hat jemand eine Idee, wie man:
- den SetWindowsHookEx auf andere Art auf den richtigen Desktop leiten kann oder
- Windows beibringen kann, dass der Thread gar nie einen Hook hatte

Habe bereits versucht, vom Dienst einfach die DLL neu zu laden (FreeLibrary und LoadLibrary) aber das geht offenbar zu schnell, resp. es scheint so als ob beim Load immer noch der alte DLL-Tread aktiv ist. Jedenfalls läuft die begin - end - Sequenz der DLL beim Neuladen nicht ab.
Heinz Schneider
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz