Announcement

Collapse
No announcement yet.

XP Manifest in DLL

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • XP Manifest in DLL

    Hallo,

    ich habe eine dll genauer gesagt eine shellextension, die ein eigenes
    Formular enthält. Jetzt habe ich schon den Tipp bekommen
    mal in der MSDN Dokumentation nachzuschauen, wie ich es erreiche in einer
    DLL das XP Manifest zu aktivieren. Ich habe dazu folgendes gemacht:

    1. Die Manifest Datei erstellt "windowsxp.manifest". Meine Anwendung heisst
    "mp3archiver.exe".
    <PRE>
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
    name="SpeedSoft"
    processorArchitecture="x86"
    version="1.0.0.0"
    type="win32"/>
    <description>Windows Shell</description>
    <dependency>
    <dependentAssembly>
    <assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Common-Controls"
    version="6.0.0.0"
    processorArchitecture="x86"
    publicKeyToken="6595b64144ccf1df"
    language="*"
    />
    </dependentAssembly>
    </dependency>
    </assembly>
    </PRE>

    2. Die rc Datei "windowsxp.rc" mit folgenden Inhalten erstellt<PRE>
    2 24 "windowsxp.manifest"
    </PRE>
    - 2 so steht es in der aktualisierten Version vom MSDN das der Wert
    eingetragen werden sollte<br>
    - 24 ist das RT_MANIFEST

    3. Ich habe mit brcc32 die windowsxp.rc datei zu einer resource Datei
    compiliert und diese dann in der ShellExtension mit {$R windowsxp.res}
    eingebunden.

    4. Ich habe dann mit einem Resource-Editor die Compilierte Datei geöffnet
    und finde dort auch das Manifest wieder.

    5. Es funktioniert aber nicht unter XP.

    Was habe ich falsch gemacht. Kann mir irgendjemand da einen Tipp geben der
    es schon mal erfolgreich geschafft hat in einer DLL das Manifest zu
    aktivieren?

    Vielen Dank

    Gruß Rainer

  • #2
    Hallo,

    das Manifest muss der Anwendung (EXE) zugeordnet werden, die den Prozess erzeugt, in den die DLL geladen wird. Das Manifest sorgt dafür, dass die neue Version der <i>Microsoft Common Controls</i> in den Prozess geladen wird, aber dies kann nur beim Start des Prozesses gesteuert werden. Alle Module in diesem Prozess "teilen" sich dann die geladene Version

    Comment


    • #3
      Hallo Herr Kosch,

      danke für Ihre Antwort. Dazu eine Frage. Was ist den die Anwendung bei einer Shell-Extension? Ist es die explorer.exe die die ShellExtension lädt?

      Gruß Raine

      Comment


      • #4
        Hallo,

        das kommt auf einen Versuch an. Ich habe das aus Spaß bisher nur einmal mit einem COM+ Objekt (COM-DLL) ausprobiert, dort ist <i>DLLHOST.EXE</I> aus dem System32-Unterverzeichnis von Windows dafür zuständig

        Comment


        • #5
          Hallo Herr Kosch,

          danke nochmals für Ihre Antwort. Dazu aber nochmals eine Frage: Wie kann ich das Manifest einer Anwendung (EXE) zuordnen?

          Gruß Raine

          Comment


          • #6
            Hallo,
            schau mal dort nach. Da habe ich eine Komponente gepostet die das kann.
            <br>
            http://www.delphipraxis.net/topic11792.html&postdays=0&postorder=asc&highlight =manifest&start=15
            <br>Einfach auf das Hauptformular setzen und ferti

            Comment


            • #7
              Hallo Jens,

              danke für deine Mühe. Leider ist Vorgehensweise die gleiche, als wenn ich es mit meinem eigenen Manifest mache bis auf das bei dir die Angaben

              1 24 "mein.manifest"

              in der rc-Datei gemacht wurden, die bei einer Shell-Extension leider keine Wirkung haben.

              Das Problem mit einer Shell-Extension und einem Manifest scheinen zwar mehrere Personen zu haben, aber niemand weiss da genau bescheid wie damit umzugehen ist. Anscheinend noch nicht mal Microsoft selber .

              Gruß Raine

              Comment


              • #8
                Hallo,

                &gt;Wie kann ich das Manifest einer Anwendung (EXE) zuordnen?

                ganz einfach - man legt nur eine Textdatei an, deren Dateiname mit dem Dateiname der EXE übereinstimmt, wobei allerdings der Suffix <b>.manifest</b> angehängt wird.

                Beispiel: <i>Explorer.exe</i> wird zu <i>Explorer.exe<b>.manifest</b></i>

                In diese Manifest-Datei kommt dann der folgende Inhalt:
                <pre>
                &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
                &lt;assembly xmlns=&quot;urn:schemas-microsoft-com:asm.v1&quot; manifestVersion=&quot;1.0&quot;&gt;
                &lt;assemblyIdentity
                version=&quot;1.0.0.0&quot;
                processorArchitecture=&quot;X86&quot;
                name=&quot;OssiSoft.Delphi6Test.Delphi6WindowsXP1& quot;
                type=&quot;win32&quot;
                /&gt;
                &lt;description&gt;Das erste Delphi 6 Projekt mit XP Styles.&lt;/description&gt;
                &lt;dependency&gt;
                &lt;dependentAssembly&gt;
                &lt;assemblyIdentity
                type=&quot;win32&quot;
                name=&quot;Microsoft.Windows.Common-Controls&quot;
                version=&quot;6.0.0.0&quot;
                processorArchitecture=&quot;X86&quot;
                publicKeyToken=&quot;6595b64144ccf1df&quot;
                language=&quot;*&quot;
                /&gt;
                &lt;/dependentAssembly&gt;
                &lt;/dependency&gt;
                &lt;/assembly&gt;
                </pre>

                Wenn die EXE gestartet wird, "sucht" Windows automatisch im <b>gleichen Verzeichnis</b> auch immer nach einer Datei mit dem gleichen Namen - aber mit angehängtem .manifest. Das Einbetten des Manifests in die Ressourcen ist nur ein Komfort, wenn man nicht mit der zusätzlichen Datei hantieren möchte

                Comment


                • #9
                  Hallo Herr Kosch,

                  ich habe es gerade genauso ausprobiert wie von Ihnen beschrieben. Leider hat es zu keinen Erfolg geführt. Haben Sie oder jemand anderes da noch eine Idee?

                  Gruß Raine

                  Comment

                  Working...
                  X