# Manifest in OCX oder DLL (ActiveX) einbinden



## conaito (8. Februar 2005)

Ich habe ein problem. 

Ich habe eine OCX (ActiveX) erstellt. Darin wird eine andere Dll angesprochen.. diese benötigt aber eine Manifestdatei.. bzw. das Programm welche diese Dll nutzt. 

Ich habe gelesen das es möglich sei Manifest als *.res ins Projekt mit einzubinden und mit zu compilieren.

Jetzt meine Frage hat jemand eine Idee wie ich ein Manifest auch in eine OCX oder DLL mit compilieren kann. Zum Beispiel mit einbinden als *.res.. aber wie.


----------



## Shakie (9. Februar 2005)

Aus wie vielen Dateien besteht denn deine Manifest-Datei? Ich wollte mal eine Manifest-Datei mit dem Programm mitgeben und habe die Datei, weil es nur ein paar Zeilen waren, knallhart als String-Konstante im Programm gespeichert. Bei Programmstart wurde dieser String dann, falls die Manifest-Datei noch nicht existierte, in eine neue Manifest-Datei geschrieben.


----------



## conaito (9. Februar 2005)

Klingt ja nicht schlecht. Das Problem ist ja das es sich um eine OCX oder von mir aus auch DLL handelt. Diese greift auf eine andere DLL von Windows zu welche eine Manifest Datei benötigt. Wenn ich jetzt meine OCX/oder DLL weitergebe und jemand diese nutzen möchte muss er um das sein programm dann läuft dieses Manifest mit im Verzeichnis haben. Ich sag mal im Falle einer DLL könnte man ja wie in deiner Idee (oder besser laut deiner Idee) auch ein Manifest erstellen. Das würde mich schon mal interessieren. Könntest du mir sagen wie du das gemacht hast oder vielleicht sogar ein sample zukommen lassen?

Dann Problem OCX. Ich möchte bestenfalls diese OCX datei über den Browser ansprechen mittels einer CAB. Jetzt hab ich hier das Problem das ich denke das ein eingebundenes Manifest nicht geht. Hast du dafür vielleicht noch eine Idee?

Habe gestern den ganzen tag versucht ein Manifest über eine *.res Ressource einzubinden. Bei einer Anwendung also *.exe und nicht mal das hat bei mir geklappt. Wenn ich das Manifest lösche funktioniert nix mehr 

Ach danke für deine schnelle Antwort und um deine Frage zu beantworten, die Manifest Datei ist eine einzige Datei ca. 700 Byte groß.


----------



## Shakie (9. Februar 2005)

Zur Verwendung von Ressourcen findest du alle wichtigen Informationen und Beispiele auf dieser Seite: Link

Hier noch ein kleines Beispiel, wie ich das mit dem Speichern der Manifest-Datei als Konstante meinte:
Ich habe zuerst eine Konstante definiert, die den gesamten Inhalt der Manifest-Datei hat. Dabei musste ich allerdings die Zeilenumbrüche durch ein anderes Zeichen ersetzen, damit VB nicht meckert. Ich habe mich hierbei für dieses Zeichen ø entschieden. Weiterhin wurden alle Anführungsstriche durch ein Ausrufezeichen ersetzt, wiederrum damit VB nicht meckert.

```
Const MANIFESTINHALT As String = "<?xml version=.0! encoding=!UTF-8! standalone=!yes!?>ø<assembly xmlns=!urn:schemas-microsoft-com:asm.v1! manifestVersion=.0!>ø<assemblyIdentityøversion=.0.0.0!øprocessorArchitecture=!X86!øname=!Firma.Projekt.Name!øtype=!win32!ø/>ø<dependency>ø<dependentAssembly>ø<assemblyIdentityøtype=!win32!øname=!Microsoft.Windows.Common-Controls!øversion=!6.0.0.0!øprocessorArchitecture=!X86!øpublicKeyToken=!6595b64144ccf1df!ølanguage=!*!ø/>ø</dependentAssembly>ø</dependency>ø</assembly>ø"
```
Dann wird die Konstante einfach in eine Datei geschrieben, wobei vorher das ø-Zeichen wieder durch einen Zeilenumbruch ersetzt wird sowie das Ausrufezeichen durch Anführungsstriche:

```
Private Sub ManifestErstellen()
'SUB: Erstellt die Manifest-Datei.
	'HINWEIS: ! ersetzen durch "
	'		 ø ersetzen durch Zeilenumbruch
	Dim strManifestDatei As String
	Dim intNummer As Integer
	intNummer = FreeFile
	strManifestDatei = App.Path & "\MeinProgramm.exe.manifest"
	'Datei öffnen:
	Open strManifestDatei For Binary Access Write As intNummer
	'Inhalt der Manifest-Datei schreiben (und vorher die entsprechenden Zeichen zurück-ersetzen:):
	Put #intNummer, , Replace$(Replace$(MANIFESTINHALT, "!", Chr$(34)), "ø", vbCrLf)
	'Datei schließen:
	Close intNummer
	DoEvents
End Sub
```
Diese Manifest-Datei bewirkt beispielsweise, dass bei WinXP auch der WinXP-Style für die Steuerelemente verwendet wird.


----------



## conaito (9. Februar 2005)

Wow! Vielen Dank das ist wirklich eine große Hilfe! Ich werde es jetzt mal in angriff nehmen..

Wenn jedoch noch jemand informationen hat um eine Mnaifest Datei in eine OCX oder DLL einzubinden bitte melden! :suspekt: Ist wirklich absolut wichtig für mich das auch das funktioniert.


----------

