Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Out-Of-Process COM server -> shell extension/property page (https://www.delphipraxis.net/109793-out-process-com-server-shell-extension-property-page.html)

christophspaeth 7. Mär 2008 16:35


Out-Of-Process COM server -> shell extension/property pag
 
Hallo zusammen,

ich muss zwei bestehende Property Pages für die ActiveDirectory Benutzerverwaltung auf windows 64 zum laufen bringen.
Leider hab ich dazu nur andere Fragen aber keine Antworten gesehen und nachdem die schon älter sind, hoffe ich, dass meine Anfrage mehr Glück hat ;-)

Wenn ich nicht noch ca. 1 Jahr auf ein Delphi Win64 warten kann, sehe ich grundsätzlich 3 Möglichkeiten

1. Den 64bit-Compiler von Lazarus/Freepascal verwenden
Leider sind die Com und ActiveX-Units von Freepascal nicht vollständig genug um das zu unterstützen und die Borland-units krieg ich nicht compiliert.

2. Das ganze nochmal in C++/MFC zu machen
Wenn es anders geht, würde ich das bevorzugen

3. Der derzeitigen InProc-Server in einen Out-Of-Prcess server umwandeln.
Leider bin ich da etwas ins stocken gekommen und hoffe auf eure Hilfe.

Die Seiten sind derzeit als in process COM-Server in delphi 32 geschrieben: Die implementierende Klasse ist ein TTypedComObject und implementiert neben dem eigenen (leere) Interface auch noch IShellExtInit, IShellPropSheetExt implementiert.

Der naheliegendste Ansatz, einfach mal von library auf program umzustellen und zu schauen was er macht hat irgendwie nicht hingehauen.
Anschließend hab ich versucht, einen simplem Out of process server zu schreiben, der zwei Interfaces implementiert und einen client dazu, der sich beide Interfaces holt.
Leider kriege ich zur Laufzeit im Client beim zweiten Interface einen Fehler, dass das Interface nicht unterstützt wird.

Ich bin für jeden Tipp dankbar, (außer der TODO-List für Dummies) wäre mir wahrscheinlich auch mit einer guten und etwas weitergehenden Einführung in out-of-process server geholfen - zu denen hab ich naämlich irgendwie wenig verwertbares gefunden.

Danke & Gruß
Chris

sakura 7. Mär 2008 20:17

Re: Out-Of-Process COM server -> shell extension/property
 
Zitat:

Zitat von christophspaeth
ich muss zwei bestehende Property Pages für die ActiveDirectory Benutzerverwaltung auf windows 64 zum laufen bringen

Leider keine Chance, da Windows x64 auch voraussetzt, dass diese Erweiterungen mit eine 64-Bit Compiler erstellt werden. Solange Borland keinen für Delphi liefert, solange schaust Du leider auch in die Röhre...

...:cat:...

christophspaeth 10. Mär 2008 08:34

Re: Out-Of-Process COM server -> shell extension/property
 
Hallo Sakura,

danke für deine Antwort!

Diese Erweiterung ist ja über COM angeschlossen, und laut Wikipedia ist es möglich, auf einen 32 bit out-of-process server von einer 64-bit Anwendung zuzugreifen. Und genau das hätte ich versucht: Den vorhgandenen inproc-server (dll) in einen out-of-process-server (exe) umzustellen, aber leider kriege ich es nicht mal auf einem 32 bit System hin, den out of process server so zu schreiben, dass er auch von der AD Benutzerverwaltung verwendet wird. Meines Wissens nach sollte es für den COM-Client (also hier die AD Benutzerverwaltung) absolut egal sein, ob der Server inproc, out of process oder sogar DCOM ist. So tief, dass ich wüsste, wie ich diesen out-ouf-process-server schreiben muss geht mein Wissen an der Ecke aber leider nicht.

Wenn also jemand konkret zu out of process Infos, ne gute Quelle oder ein gutes Buch kennt, wäre das sehr hilfreich.

Wenn natürlich jemand sicher weiß, dass es auch mit out of process server nicht funktionieren wird bin ich natürlich auch für die Gründe dankbar ;-)

Mit Dank & Gruß
Chris

sakura 10. Mär 2008 09:30

Re: Out-Of-Process COM server -> shell extension/property
 
Zitat:

Zitat von christophspaeth
Wenn natürlich jemand sicher weiß, dass es auch mit out of process server nicht funktionieren wird bin ich natürlich auch für die Gründe dankbar ;-)

Schon versucht, aber leider werden die für solche Aufgaben nicht unterstützt. Sorry, aber Du hast absolut keine Chance derzeit, mich hat das auch schon zur Weißglut getrieben. Das ist einer der Gründe, warum so lange so laut nach einem 64-Bit Compiler geschrien wurde. Viele sind deswegen leider schon lange auf andere Sprachen gewechselt :|

...:cat:...

christophspaeth 10. Mär 2008 09:37

Re: Out-Of-Process COM server -> shell extension/property
 
Naja, dann bleibt mir wohl nix anderes übrig, als mir den Spaß anzutuen, das ganze mit Visual C++ und den "Microsoft Fenster Klassen" nachzubauen.

Danke für deine Antworten!

Gruß
Chris

sakura 10. Mär 2008 09:39

Re: Out-Of-Process COM server -> shell extension/property
 
Zitat:

Zitat von christophspaeth
Naja, dann bleibt mir wohl nix anderes übrig, als mir den Spaß anzutuen, das ganze mit Visual C++ und den "Microsoft Fenster Klassen" nachzubauen.

Solltest Du wider meines Erwarten doch noch von einer Lösung hören, stupse mich darauf an. Ansonsten viel Spaß mit C++ und COM *schauder*

...:cat:...

christophspaeth 10. Mär 2008 10:27

Re: Out-Of-Process COM server -> shell extension/property
 
Ob man das als Lösung oder eher nur als Workaround bezeichnen kann sei mal dahingestellt, aber bei unseren ersten Tests hat es im 32-bit Modus funktioniert.
Also mmc /32
und dann AD Benutzerverwaltung hinzufügen und die vom Setup registrierte Karte war bei den Benutzern sichtbar.
Warum wir erst jetzt auf diesen Ansatz gekommen sind weiß ich auch nicht ;-)

Je nachdem wie lange sich CodeGear noch mit 64 bit Zeit lässt bin ich erstmal von C++ und COM erlöst :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz