.NET Framework - com
Asked By Karsten Schulz
28-Apr-08 11:03 AM
Hi NG,
wenn ich ein unbekanntes ComInterface habe, das als Server.exe läuft,
wie erhalte ich eine Mimik/Funktionsinhalte/listen *.tlb o.dg. auf dessen
Inhalt , so das ich dieses Interface nachbilden kann ?
danke für Hinweise
grüße
Karsten Schulz
Word
(1)
GetIDsOfNames
(1)
VBA
(1)
CComDispatchDriver
(1)
KeineCOM
(1)
ProgIDs
(1)
ComInterface
(1)
IDispatch
(1)
SvenC replied...
Hi Karsten,
Falls eine Typelib eingebettet ist, kannst Du mit OleView das exe
als Typelib öffnen.
--
SvenC
Karsten Schulz replied...
Hi,
ok das muß ich mal testen, sehe zwar mit depends die
funktionen doch seine parameter nicht.
danke
gruß Karsten Schulz
SvenC replied...
Hi Karsten,
Depends kann Dir nur die export-Symbole anzeigen, keine
COM Klassen und Schnittstellen.
Für exportierte Funktionen und C++-Klassen sollte Dir
der Hersteller ein h/lib-Pärchen geben.
--
SvenC
Sven Hansen replied...
Andere Möglichkeit mit Parametern etc.:
In Word Alt+F11 drücken, dann im Menü Extras/Verweise den entsprechenden
Com-Server einschalten und nun im Menü Ansicht/Objektkatalog sich alle
Funktionen mit Parametern anzeigen lassen.
Gruß
Sven
Karsten Schulz replied...
genau so habe ich es getan, leider ist der nicht öffentlich sichtbar :-(
Sven Hansen replied...
Dann ist der Server wohl nicht registriert. Das kann man aber mit einem
Proggi dessen Name glaube ich regsvr32 ist machen.
Alternative:
Also in VC6 wähle ich den Dialog: Ansicht/Klassenassistent dann dort "Klasse
hinzufügen / aus einer Typbibliothek" Dort die entsprechende Exe angeben,
die die Typen enthält, und sich die Wrapper-Klassen generieren lassen. Dann
kann man dort alles wunderbar ausprobieren.
Gruß
Sven
Andreas Heyer replied...
Nein, das ist keine logische Folgerung! Es ist keine Typelib
vefügbar, ob das am Fehlen der selben oder nur an fehlenden
Registryeinträgen liegt, kann man von hier wohl nicht
entscheiden. Es ist durchaus möglich, dass bewußt keine Typelin
zur Dokumentation der Schnittstellen veröffentlicht wurde.
Stand-Alone-Server sind EXE-Dateien und werden nicht mit regsvr32
registriert. Man ruft sie stattdessen mit "/regserver" als
Parameter auf.
MfG
Andreas
SvenC replied...
Hi Andreas,
Ist aber auch noch eine Konvention, die nicht jeder einhält.
@Karsten: hast Du inzwischen mal versucht, mit OleView das
exe als type library zu öffnen?
OleView-Menü: File->View typelib...
--
SvenC
Karsten Schulz replied...
Ja, leider hat die *exe keine -Symbole exportiert,
ich weiß das sie als service läuft, und ohne sie verschiedene
Programme nicht laufen : stichwort (aladin)
Im warsten Sinne eine Wunderlampe das Keysystem
mit /register kann man sie ein/austragen, also ein comserver ohne
*.tlb's eigentlich seltsam, wie sollten die anderen Programme dann
seine interfaces anrufen ?
grüße
Karsten Schulz
SvenC replied...
Hi Karsten,
OleView guckt aber gar nicht nach exportierten Symbolen,
sondern nach eingebetteten typelibs. Verwechselst Du OleView
mit dem Dependency Walker?
Wenn Du die exe zum download auf Deine website stellst,
guck ich mal rein.
Wenn wirklich keine typelib dabei ist, dann würde ich irgendeine
Art von Dokumentation erwarten, in der die ProgIDs und
Schnittstellen beschrieben sind.
--
SvenC
Karsten Schulz replied...
Hi Sven,
das Teil liegt hier : http://kahnsoft.sytes.net/testsrv.zip
Leider entnahm ich dem keine Interfaces, obschon diese
enthalten sein müssen.
grüße
Karsten Schulz
SvenC replied...
Hi Karsten,
Stimmt, da ist keine Typelib drin. Dann hilft nur eine
separate Doku vom Hersteller. Wahrscheinlich werden für
Script-Clients nur IDispatch-Schnittstellen herausgereicht.
Die lassen sich in Scripten sehr einfach nutzen, ist in C++
leider immer etwas mehr Code, weil man die Aufrufe von
GetIDsOfNames und Invoke selbst absetzen muss und
Parameter in VARIANT-Arrays stopfen muss.
CComDispatchDriver hilft ein bisschen.
Wenn Du Doku hast, würde ich erst mal versuchen in
VB6 oder VBA was zum Laufen zu bekommen, bevor
Du das dann auf C++ überträgst.
--
SvenC
Karsten Schulz replied...
Hi Sven,
leider gibt es keine Doku dafür, es ist ein dongelsystem, mich nervt
nur das wenn ich das dongel verbummel ich den Rechner und die
Software wegtreten kann. (so gescha es dann auch^^)
grüße
Karsten Schulz
Andreas Heyer replied...
Alles klar, du betätigst dich als Cracker. Da müssen wir die
Beratung jetzt einstellen... Es wäre auch etwas merkwürdig, wenn
ein Kopierschutzdongle sich durch simples Aufrufen von
dokumentierten COM-Objekten umgehen ließe.
Mhm, und dafür hat der Hersteller keinen Ersatz vorgesehen?
MfG
Andreas
Karsten Schulz replied...

jemand bei meinem mittelgrossen Problem helfen, das ich bei einem Kunden von mir habe. Wird Word mittels eines Doppelklicks auf ein Dokument gestartet, so ?ffnet sich zwar Word doch die besagte Datei wird nicht ge?ffnet. Das googlen zu dieser Problematik bringt die es tats?chlich ein Add-In ist, das, sobald es vorhanden ist, die Macken bei Word ausl?st. Ja, ihr habe es erraten, es ist mein Add-In (Dokumentvorlag im Startup werde die Kommandozeile aus und ?ffne die Datei selber. Vielleihct wird das mit einem sochen Word-around ja was. Doch jetzt folgt das n?chste Problem. Wird Word mittels Doppelklick auf ein Dokument gestartet, dann liefert mir das GetCommandLine-API nicht allzu viel dann finde ich dort vielleicht mein Dateiname. Ich frage euch hier, weil wir in der VBA-Ecke die APIs und DDE nur beschr?nkt kennen. Das einbinden sollte ich anschliessen in den Griff bekommen. Mein Zugriff auf das API habe ich hier "geklaut". http: / / word.mvps.org / faqs / macrosvba / CheckHowWordLaunched.htm Besten Dank f?r jeden kleinen Tipp - - Thomas Gahler Co-Autor von ?Microsoft Word-Programmierung. Das Handbuch? (MS Press) - Windows Vista (SP2), Office 2007 (SP2) VB - German Discussions Windows
VS2005 y Word 2002: Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED) .NET Framework Hola a todos. . . Si tenemos el siguiente código. . . . . Try Dim oWord As New Word.Application Dim oDoc As Word.Document Dim path As String = "C: \ ALMOGAVERS \ 011008_2_desde_hp.doc" oWord.Visible = False oDoc = oWord.Documents Open(path) 'Dim rngRange As Word.Range = ActiveDocument.Range 'Problem: Not Declared 'oDoc = oWord.Documents("Document1").Content Call DoFindReplace("4.696 oDoc) 'Problem: Not Declared 'etc. etc. oDoc.SaveAs(path) oDoc.Close() oDoc = Nothing oWord.DisplayAlerts = Word.WdAlertLevel.wdAlertsNone oWord.Quit() oWord = Nothing Catch ex As Exception MessageBox.Show("Exception: " & ex.Message funcion. . . . Private Sub DoFindReplace(ByVal TextoFind As String, ByVal TextoReplace As String, ByVal DOC As Word.Document) Dim oWord As New Word.Application Dim oDoc As Word.Document oDoc = DOC.Range Dim rngRange As Word.Range = DOC.Range With rngRange.Find .ClearFormatting
Scraping off a Word document? .NET Framework Here's my theoretical situation. I have a Word mail merge document. There's a merge field that is of interest on each page is iterate through the pages and save off each group of Employees as a separate Word document. So if the first five pages of the merged document have Employee: Joe Schmoe document Any suggestions on where to start on this endeavor? I know I can invoke Word OLE method calls and whatnot to start things off. . . C# Discussions Microsoft.Office.Interop.Word.WdUnits.wdStory (1) Microsoft.Office.Interop.Word.ApplicationClass (1) System.Globalization.CultureInfo.InvariantCulture (1) Microsoft.Office.Interop Word.Document (1) Microsoft.Office.Interop.Word.Shape (1) Microsoft.Office.Interop.Word.Range (1) MyMergeDocument.MailMerge.DataSource.FirstRecord (1) MyMergeDocument.MailMerge
C3 = B6ffnen_einer_XML-Datei? = .NET Framework Hallo! Ich habe folgendes Problem. Auf meinem PC habe ich Word 2000 und Word 2003 installiert. Beide funktionieren und sollten auch weiterhin funktionieren. Nun habe ich eine Word-XML Datei die ich in meiner C#-Applikation öffnen möchte. Dies mache ich so: Microsoft.Office.Interop.Word.ApplicationClass WordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); Microsoft.Office.Interop.Word.Document aDoc = WordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing ref isVisible, ref missing, ref missing, ref missing, ref missing); Wenn ich nun als letztes Word 2003 benutzt habe und die dll's und dot Dateien von Word 2003 als letzes geladen wurden, öffnet sich meine XML Datei auch mit word 2003
reading text out of word docs .NET Framework I started working on a program to read text out of some well organized word docs. I have done this sort of thing in vba but not quite this extensively and I am not great with word automation. I know enough to be dangerous. LOL. I need to open the doc (got docs in vb.net. Here is some of what I have so far: oWord = CreateObject("Word.Application") oWord.Visible = True oDoc = oWord.Documents.Open("C: \ SomeWordDoc.doc", , True) Dim rng As Word.Range With oWord.Selection .HomeKey(wdStory) rng = .Range End With rng.Find.Text = "Issue date started well on this. I'd really apprecate it. Thanks, Keith VB.NET Discussions Microsoft Word (1) Office (1) Word (1) VBA (1) VB (1) CreateObject (1) Application (1) ShowDialog (1) Is this not possible