Thema: Delphi Themed Form in COM Dll

Einzelnen Beitrag anzeigen

Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#4

Re: Themed Form in COM Dll

  Alt 8. Mär 2008, 14:08
Der Uhrzeitdialog wird auch nur als normaler Dialog gestartet. Bevor der Dialog angezeigt wird, wird eben ein Elevated COM Object angefordert, was die UAC auf den Plan ruft. Bei Erfolg wird der Dialog dargestellt. Erst wenn der Benutzer auf OK klickt, werden die im Dialog gesammelten Daten an eine Methode im COM Objekt übergeben. Die Methode ändert dann die Einstellung.

Man kann es gut mit diesem Programm sehen:
http://technet.microsoft.com/de-de/sysinternals/bb896653(en-us).aspx

Wenn du es als Admin startest, dann kannst du folgendes sehen:

1. Uhrzeitdialog öffnen -> Explorer.exe startet rundll32.exe
2. Adminrechte anfordern für Uhrzeit ändern ->
dllhost.exe wird in wininit.exe/services.exe/svchost.exe (ein Dienst in einem Pool macht die Aufgabe) gestartet

Eigenschaften des Prozesses
Dllhost liegt in C:\Windows\system32\DllHost.exe

gestartet wurde es über
C:\Windows\system32\DllHost.exe /Processid:{9DF523B0-A6C0-4EA9-B5F1-F4565C3AC8B8}

Die GUID ist die ID des timedate.cpl Systemsteuerungs COM Moduls. Darin liegt ein COM Objekt, welches die Uhrzeit ändert. Es stellt aber keine GUI dar. Die GUI liegt zwar auch darin, aber eben nicht im COM.

Wenn du dein Formular in der COM Methode ausführst, dann wird es innerhalb von DllHost.exe dargestellt. Diese EXE hat aber garkein Theme. Ergo, das Formular auch nicht.

---
Mit dem Zielbutton rechts in der Process Explorer Toolbar, kannst du übrigens überprüfen, welches Fenster zu welchem Prozess gehört.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat