Einzelnen Beitrag anzeigen

Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#4

AW: NonVCL-Fenster in VCL-Anwendung

  Alt 17. Mär 2011, 18:02
Wie gesagt, es handelt sich um eine Desktop-Uhr.
Die zeichne ich in ein TBitmap und lade das Ganze in ein TImage auf der Form.
Die wird transparent gemacht, so dass ich nur noch den Kreis übrig habe.
Dann setzte ich WS_EX_LAYERED, so dass ich durch das Form "hindurchklicken" kann.
Zusätzlich gibt es maus-sensitives Alphablending. Also beim drüber fahren mit der Maus wird das Form fast ganz durchsichtig gemacht.
Das setzte ich mit einem Maus-Hook um, weil ja OnMouseEnter nicht mehr funktioniert.

Probleme dabei sind aber folgende:
Beim
- Sperren der Session (Win+L)
- nach dem Drücken von Strg+Alt+Entf (Die eingeblendete "Windowssicherheit" verhält sich genauso wie ein Sessionlock)
muss ich den Mousehook sowie alle Fenstereigenschaften neu setzen.
Alphablending geht sporadisch verloren, exlayered, also hindurchklickbar, geht auch nicht mehr und das maussensitive Alphablending geht wegen dem Hook nicht mehr.

Punkt 1 habe ich durch überwachen vom WM_SESSIONCHANGE und anschließendes Neu-Setzen des Hooks sowie der Fenstereigenschaften umgehen können.
Punkt 2 nur durch sporadisches Neu-Setzen der Eigenschaften.

So weit war das alles noch verkraftbar und lief gut.
Dann hatten sich allerdings Freezes von Windows gezeigt. Und zwar auf nahezu allen Rechnern wo das Programm lief.
Zeitweise hat der Rechnicht auf Keinerlei Eingaben mehr reagiert. Weder Maus, noch Tastatur. Erst nach dem Drücken von Strg+Alt+Entf oder dem Sperren der Session wurden wieder ein bis zwei Eingaben angenommen. Danach das gleiche Spiel.

Aufgehört hat das erst, als ich den Mousehook aus dem Programm entfernt habe.

Das ist jetzt der Komplette Leidensweg...

Alte Threads zum Thema:
http://www.delphipraxis.net/133703-d...h-klicken.html
http://www.delphipraxis.net/143253-w...icherheit.html

Wer das Programm kurz ausporbieren will:
https://hydra.erlangen.ccc.de/~schub...0124_Setup.exe

Den Einstellungs-Dialog beim ersten Start einfach bestätigen.
Ist die Version ohne Freezes, Restlos-Uninstaller ist auch dabei
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...

Geändert von Schubi (17. Mär 2011 um 18:13 Uhr) Grund: Link hinzu
  Mit Zitat antworten Zitat