COM-DLL ohne Registrierung nutzen ?

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

COM-DLL ohne Registrierung nutzen ?

Beitrag von brandelh »

Hi,

normalerweise wird ja eine ActiveX/COM DLL vom Installationsprogramm registriert und danach genutzt.
Kann man das aber auch ohne Registrierung nutzen wie eine normale DLL ?

Hintergrund ist der, dass ich ein Programm nicht installieren will, sondern nur in ein Verzeichnis kopieren.
Diese COM DLL würde ich beilegen, kann ich diese dann aber auch ansprechen ?

PS: Ich habe die DLL noch nicht erworben und wollte VORHER sicher sein sie auch nutzen zu können ;-)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von Koverhage »

Denke mal an Quick PDF, dort gibst Du ja auch nur die DLL mit.
Wenn Du jetzt die ActiveX DLL nimmst was passiert dann ?
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von brandelh »

Die DLL, die ich bei QuickPDF verwende ist eben KEINE ActiveX DLL und kann daher einfach so mit ot4xb verwendet werden.

Und bevor ich Zeit und Geld in eine ActiveX/COM DLL Bibliothek stecke, dachte ich mir frage doch mal die die sich mit ActiveX auskennen ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von Tom »

Ohne Registrierung stehen die Funktionen der DLL nicht in der COM-Schnittstelle zur Verfügung. Die DLL veröffentlicht ihre Funktionen auch nicht wie eine normale DLL, sondern nur über die Schnittstelle.

Deine Applikation kann aber prüfen, ob die Bibliothek zur Verfügung steht, indem sie beispielsweise die Registry nach der CLSID oder GUID scannt (Funktionen hierzu gibt es m.E. im Forum). Ist sie nicht vorhanden, ließe sie sich beispielsweise durch einen Batchaufruf von REGSVR32 installieren. Dafür sind jedoch in aller Regel Adminrechte nötig.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von brandelh »

Danke TOM,

das hatte ich befürchtet, wollte aber sicher gehen.
Adminrechte oder Aufruf von RegSrv32 möchte ich genauso vermeiden, wie die träge Ausführungsgeschwindigkeit von Xbase++ bei Active X ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von AUGE_OHR »

Tom hat geschrieben:Ohne Registrierung stehen die Funktionen der DLL nicht in der COM-Schnittstelle zur Verfügung.
Die DLL veröffentlicht ihre Funktionen auch nicht wie eine normale DLL, sondern nur über die Schnittstelle.
hm ... was war zuerst da : DLL oder OCX ...

OCX als activeX bedeutet du nur das ich über die iDispatch COM Schnittstelle kommunizieren "kann"

angenommen WMP.OCX, was ja für VB als activeX gedacht ist, dessen Grösse ist nur 20KB.
angesprochen wird nun die WMP.DLL (4.8MB) was man unter C# direkt macht.

anders nun bei Codejock wo die OCX auch gleichzeitig die DLL ist.
wenn du OCX und DLL geliefert bekommst würde ich mir die Grösse der OCX ansehen.
wenn die OCX wie bei WMP so klein ist dann enthält die meisten "nur" die COM Schnittstelle ( für VB User )

! Note : unter Win 7 / 8 gibt es ja kein WMP.OCX mehr aber trotzdem ist die CLSID vorhanden und gültig.
Es muss also evtl. die CLSID von der OCX in der Registry eingetragen sein damit die DLL funktioniert !
brandelh hat geschrieben:wie die träge Ausführungsgeschwindigkeit von Xbase++ bei Active X ;-)
wenn du mit der aktuellen ot4xb arbeitest kannst du doch die eingebauten Function nutzen
Pablo Botella
2. Oktober 2013
Re: DispHPR / ot4xb

>how to use DispHPR inside ot4xb ?

I've just linked the disphpr module inside ot4xb
Functions:
_DH_CREATEOBJECT , _DH_GETOBJECT , _DH_CREATEOBJECTEX , _DH_GETOBJECTEX , _DH_CALLMETHOD , _DH_PUTVALUE , _DH_PUTREF , _DH_GETVALUE , _DH_INVOKE , _DH_INVOKEARRAY , _DH_CALLMETHODV , _DH_PUTVALUEV , _DH_PUTREFV , _DH_GETVALUEV , _DH_INVOKEV , _DH_ENUMBEGIN , _DH_ENUMBEGINV , _DH_ENUMNEXTOBJECT , _DH_ENUMNEXTVARIANT , _DH_TOGGLEEXCEPTIONS

will be used exactly like @disphpr:func( params... )
so @disphpr:dhCreateObject( params ..... ) will be _dh_CreateObject( params ..... )

>Old Syntax does not work ?
still work but you need to keep the disphrp.dll
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von brandelh »

AUGE_OHR hat geschrieben:
brandelh hat geschrieben:wie die träge Ausführungsgeschwindigkeit von Xbase++ bei Active X ;-)
wenn du mit der aktuellen ot4xb arbeitest kannst du doch die eingebauten Function nutzen
Pablo Botella
2. Oktober 2013
Re: DispHPR / ot4xb

>how to use DispHPR inside ot4xb ?

I've just linked the disphpr module inside ot4xb
Functions:
_DH_CREATEOBJECT , _DH_GETOBJECT , _DH_CREATEOBJECTEX , _DH_GETOBJECTEX , _DH_CALLMETHOD , _DH_PUTVALUE , _DH_PUTREF , _DH_GETVALUE , _DH_INVOKE , _DH_INVOKEARRAY , _DH_CALLMETHODV , _DH_PUTVALUEV , _DH_PUTREFV , _DH_GETVALUEV , _DH_INVOKEV , _DH_ENUMBEGIN , _DH_ENUMBEGINV , _DH_ENUMNEXTOBJECT , _DH_ENUMNEXTVARIANT , _DH_TOGGLEEXCEPTIONS

will be used exactly like @disphpr:func( params... )
so @disphpr:dhCreateObject( params ..... ) will be _dh_CreateObject( params ..... )

>Old Syntax does not work ?
still work but you need to keep the disphrp.dll
Hallo Jimmy,

hast du mal Beispiele mit Word und / oder Excel und der ot4xb - ActiveX Schnittstelle ?
Ist die wirklich schneller als die standardmäßig eingebaute ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von AUGE_OHR »

brandelh hat geschrieben:hast du mal Beispiele mit Word und / oder Excel und der ot4xb - ActiveX Schnittstelle ?
Ist die wirklich schneller als die standardmäßig eingebaute ?
Nein ... das lohnte nicht bei den "kleinen" Mengen ... aber mit Outlook und Mappoint ;)

obwohl man mit DispHPR activeX ansprechen kann muss man die Einschränkung machen das es nur funktioniert wenn man ein "Fenster" hat
d.h. WMP, was als Overlay oder DirectX läuft, kann man damit zwar ansprechen aber es kommt "nichts zurück".

DispHPR ist also "nur" ein Ersatz für CreateObject() und nicht für XbpActiveXControl()

p.s. Geschwindigkeit : je nach Einsatzzweck Faktor 5 - 40x schneller als Xbase++
gruss by OHR
Jimmy
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von andreas »

Hallo Hubert,

es gibt eine Möglichkeit die ActiveX-OCX/DLL über Manifest einzubinden, so dass die Installation bzw. Registrierung nicht mehr notwendig ist.
Ich weiß nicht, wie man den Manifesteintrag manuell erstellen könnte.
Ich mache es immer mit MS Visual Studio C# (die kostenlose Version sollte reichen):
- Projekt erstellen.
- Verweis auf das notwendige ActiveX hinzufügen.
- Eigenschaften des Verweises aufrufen
- "Isoliert" auf TRUE setzen.
- Projekt kompilieren.

In der erzeugten Manifest-Datei findest du einen Bereich "<file name ... </file>" den du in deine Manifestdatei einfügen kannst:

Code: Alles auswählen

<?xml version="1.0" encoding="utf-8"?>
<assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2">
  <assemblyIdentity name="WinOCXManifest.exe" version="1.0.0.0" type="win32" />
  <file name="richtx32.ocx" asmv2:size="260096">
    <hash xmlns="urn:schemas-microsoft-com:asm.v2">
      <dsig:Transforms>
        <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
      </dsig:Transforms>
      <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" />
      <dsig:DigestValue>mw6kQq+efi3RmgCf4N0kR+niGDWtmCAfZ3wwj+m/z3o=</dsig:DigestValue>
    </hash>
    <typelib tlbid="{3b7c8863-d78f-101b-b9b5-04021c009402}" version="1.2" helpdir="C:\Windows\HELP\RTFBox98.CHM" resourceid="0" flags="CONTROL,HASDISKIMAGE" />
    <comClass clsid="{3b7c8860-d78f-101b-b9b5-04021c009402}" threadingModel="Apartment" tlbid="{3b7c8863-d78f-101b-b9b5-04021c009402}" progid="RICHTEXT.RichtextCtrl.1" description="Microsoft Rich Textbox Control 6.0 (SP4)" />
  </file>
</assembly>
Dieser generierter Code für die Manifestdatei ersetzt die Windows-Registrierung. Die für das Projekt benötigte ActiveX-Dateien liegen dann auch im VS-Verzeichnis, die du in deinen Projektverzeichnis übernehmen kannst.
Gruß,

Andreas
VIP der XUG Osnabrück
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von georg »

Hallo, Andreas -


das ist ja mal ein ganz wertvoller Hinweis! Danke dafür!
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
andreas
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1902
Registriert: Mi, 28. Sep 2005 10:53
Wohnort: Osnabrück
Hat sich bedankt: 4 Mal
Kontaktdaten:

Re: COM-DLL ohne Registrierung nutzen ?

Beitrag von andreas »

Ich habe meine Beschreibung angepasst und in Wissensbasis gepostet.
Gruß,

Andreas
VIP der XUG Osnabrück
Antworten