none
VB 2008 Express: OLE-Server (EXE) erstellen RRS feed

  • Frage

  • Hallo,

    ich verwende ein von mir noch vor Jahren unter VB4 Professional Edition (16-Bit) erstellten OLE-Server (EXE) um im Büro (Windows XP) unter Excel 2003 (über die VBA-Funktion CreateObject) diverse Spezialberechnungen vorzunehmen. Die Büro-PCs sollen jetzt auf Windows 7 und Excel 2010 umgestellt werden. Die alte VB4-Anwendung ist dann nicht mehr lauffähig (lässt sich nicht mehr unter Win7 installieren). Ich habe das Project jetzt mühsam auf VB 2008 Express portiert. Allerdings bekomme ich VB 2008 nicht dazu, dass das Modul mit der Anweisung "Public Class Steuer" in der Registry mit einer CLSID registiert (also für alle anderen Windows-Anwendungen sichtbar) wird. In VB4 gab es die Class-Eigenschaft "Createable - Multiuse", um eine Klasse zu exportieren. Was muss ich dazu in VB 2008 Express einstellen?

    Die von VB 2008 Express erstellten EXE-Dateien werden vom SETUP nicht als "normale" Anwendungen im Programm-Ordner installiert, sondern unter C:\Dokumente und Einstellungen\UserName\Lokale Einstellungen\Apps\2.0\XXX\XXX\XXXX..tion_6e(hex)_7a(hex)\XXX.EXE. Damit sind die Programme nicht Maschinenbezogen sondern Userbezogen verfügbar. Eine so installierte Anwendung kann so vermutlich auch nicht als OLE-Server in der Registry unter CLSID eingetragen werden, da ja nur derjenige User auf diesen Ordner Zugriff hat, der sie auch installiert hat. Ist es mit VB 2008 Express überhaupt möglich, eine EXE-Datei zu erstellen, die als OLE-Server in der Registry eingetragen ist und deren Funktionalität von anderen Anwendungen (OLE-Clients) genutzt werden kann?

    Unter WinXP sieht der Registry-Eintrag für meine alte VB4-16-Bit-Anwendung momentan so aus:
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Steuerberechnung.Steuer]="Steuerberechnung"
    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Steuerberechnung.Steuer\Clsid]="{DF91A550-69B8-1029-8931-4E2AF6659732}"
    [HKEY_CLASSES_ROOT\CLSID\{DF91A550-69B8-1029-8931-4E2AF6659732}]="Steuerberechnung"
    [HKEY_CLASSES_ROOT\CLSID\{DF91A550-69B8-1029-8931-4E2AF6659732}\InprocHandler]="OLE2.DLL"
    [HKEY_CLASSES_ROOT\CLSID\{DF91A550-69B8-1029-8931-4E2AF6659732}\LocalServer]="C:\\Progamme\\SteuerTool\\STEUER.EXE"
    [HKEY_CLASSES_ROOT\CLSID\{DF91A550-69B8-1029-8931-4E2AF6659732}\ProgID]="Steuerberechnung.Steuer"
    [HKEY_CLASSES_ROOT\CLSID\{DF91A550-69B8-1029-8931-4E2AF6659732}\TypeLib]="{DF91A553-69B8-1029-8931-4E2AF6659732}"
    [HKEY_CLASSES_ROOT\Interface\{07CB02E1-F4F5-102E-8931-4E2AF6659732}]="Steuer"
    [HKEY_CLASSES_ROOT\Interface\{07CB02E1-F4F5-102E-8931-4E2AF6659732}\ProxyStubClsid]="{00020424-0000-0000-C000-000000000046}"
    [HKEY_CLASSES_ROOT\Interface\{07CB02E1-F4F5-102E-8931-4E2AF6659732}\ProxyStubClsid32]="{00020424-0000-0000-C000-000000000046}"
    [HKEY_CLASSES_ROOT\Interface\{07CB02E1-F4F5-102E-8931-4E2AF6659732}\TypeLib]="{DF91A553-69B8-1029-8931-4E2AF6659732}"
    [HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}]="PSOAInterface"
    [HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}\InprocServer]="ole2disp.dll"
    [HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}\InprocServer32]="oleaut32.dll"

    In Excel existiert dann ein Modul, über dass ich die Berechnungen anfordere:
    Public objSteuer As Object
    Public objSteuerAktiv As Boolean
    Function Steuer(Berechnung&, Jahr%, Monat%) As Long
    If Not objSteuerAktiv Then
      Set objSteuer = CreateObject("Steuerberechnung.Steuer")
      VersionMajor% = -1: VersionMinor% = -1
      On Error Resume Next
      VersionMajor% = objSteuer.VersionMajor
      VersionMinor% = objSteuer.VersionMinor
      objSteuerAktiv = True
    End If                                          '
    ...
    End Function

    Ich habe ziemliche Schwierigkeiten mit dem Umstieg von VB4 Professional Edition auf VB 2008 Express, da ich seit der VB4-Programmierzeit keine Erfahrungen mit der Erstellung von 32-Bit-Programmen unter VB5/6 sammeln konnte. Die Dokumentation, Beispielanwendungen und Foren für VB2008 brachten keine Fundstellen für "OLE-Server". Kann mir jemand einen Tipp geben?

    Montag, 7. Mai 2012 07:45

Antworten

Alle Antworten