Acrobat Objekt -> CreateObject()

Fragen rund um diverse Windows-Versionen, ihr Verhalten unter Xbase++ und den Umgang mit der API

Moderator: Moderatoren

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: Acrobat Objekt -> CreateObject()

Beitrag von brandelh »

Roland Gentner hat geschrieben:Hallo Hubert und Michael,
das mit der Ansteuerung von Adobe Reader/Acrobat scheint irgendwie wirklich jeder für sich zu behalten - oder es ist so einfach dass es nichts zu dokumentieren gibt :D
Dokumentieren müsste das Adobe, aber wenn man Alaskas Tool nutzt sollte man zumindest die Basisbefehle sehen.
In deinem Fall wäre es wohl aber sowieso besser einfach den Acrobat Reader über die Befehlszeile aufzurufen, er kennt etwa die gleichen Befehle wie der PDF-Fiewer und das Dokument ist auch bei Adobe zu finden (hier bestimmt auch als alter Link).
Roland Gentner hat geschrieben: Ich habe es jetzt kurzfristig für meinen Bedarf mit WScript gemacht.

Da das ein weitgehend universelles Tool zur Unterstützung der User beim Anzeigen bestimmter PDFs sein soll ist es am wichtigsten dass es mit Adobe funktioniert. Das hat (fast) jeder auf seinem PC. Andere PDF-Viewer kann ich nachträglich einbauen wenn es einer wünscht (der darf das dann auch bezahlen).
wenn es läuft ;-)

Ich frage bei mir nach dem Standardprogramm und rufe das auf (der Quellcode schwirrt hier aus verschiedenen Quellen rum).
In einem fall lege ich aber auch Sumatra bei (das kostet nix und ist frei) und wenn es keinen Standard gibt geht es damit.
Gruß
Hubert
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Michael

egal ob kostenlos oder nicht - ich müsste mir unendlich oft die Frage anhören warum ich das mit Adobe nicht zum Laufen bekomme...

Gruß
Roland
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: Acrobat Objekt -> CreateObject()

Beitrag von AUGE_OHR »

zunächst sollte man sich den "COMLicenceFinder" besorgen
http://www.codeproject.com/Articles/161 ... trieve-the
COMlicenceFinder.JPG
COMlicenceFinder.JPG (143.89 KiB) 10257 mal betrachtet
damit kann man sehen was installiert / registriert ist und ggf. Licence Informationen.

als nächstes sollte man den COM Assistant downloaden / installieren ( enthält auch HelpHTML )
http://www.devcomponents.com/comassistant/
damit geht man nun auf die OCX / DLL Dateien und kann damit die Property / Method und Events auslesen und ein *.HLP File erstellen.

mit c:\ALASKA\XPPW32\Bin\

Code: Alles auswählen

Tlb2Ch.exe [ CLSID / ProgID ] > MyHeader.CH 
kann man dann die Konstanten in eine *.CH umleiten.

mit o:classDescribe() kann man bei activeX nichts anfangen.
gruss by OHR
Jimmy
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Jimmy

Danke für die Info!
Aber mach Dir im Augenblick keine Arbeit mehr damit - wie schon geschrieben - mit WScript läuft es soweit.

Der Sache über die COM-Codes usw. zu ermitteln geht mit viel zu weit für etwas wie PDF was es schon Jahr(zehnt)e gibt. So tief will ich da nicht einsteigen. Irgendwann habe ich es dann raus und in einem Jahr ändert sich etwas und ich fange von vorne an...

Inzwischen habe ich eine INI eingebaut welche es Variabel macht unterschiedliche Viewer anzusteuern. Das kann dann der jeweilige Enduser einstellen wie er will (oder ich wenn er das nicht schafft).

(Nichts desto trotz - vielleicht gibt es einmal einen einfachen Zugang zu den Möglichkeiten mit Acrobat. Wie bei Word, Excel,...)

Danke!

Gruß
Roland
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: Acrobat Objekt -> CreateObject()

Beitrag von brandelh »

Was ist an Word und Excel einfacher als bei Acrobat Reader ?
Die CMD Schnittstelle ist zwar nicht perfekt, aber es geht.
Und Word-Basic hat es auch in sich ;-)
Gruß
Hubert
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Hubert

Code: Alles auswählen

oExcel := CreateObject( "Excel.Application" )
oExcel:Visible := lVisible
oExcel:Application:DisplayAlerts := .F.
oExcel:Application:WorkBooks:New()
oExcel:Application:WorkBooks:Add()
oExcel:Application:Worksheets(3):delete()
oExcel:Application:Worksheets(2):delete()
oBook := oExcel:ActiveWorkBook
oExcel:Application:WorkSheets( 1 ):Activate()
If !Empty( cSheet1Name )
   oExcel:Application:WorkSheets( 1 ):Name := cSheet1Name
EndIf
oSheet := oExcel:Worksheets( 1 ):cells
einfach alles von Microsoft sauber dokumentiert und anwendbar...

Gruß
Roland
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: Acrobat Objekt -> CreateObject()

Beitrag von AUGE_OHR »

Roland Gentner hat geschrieben:Der Sache über die COM-Codes usw. zu ermitteln geht mit viel zu weit für etwas wie PDF was es schon Jahr(zehnt)e gibt.
Es läuft doch wunderbar mit Adobe Reader bis v7.x und der OCX aber dann wurde ja das ganze Konzept seit der v9.x mit AcroRd32.dll eingeführt und damit wurde es plötzlich teilweise sehr langsam ( meistens XP auf älteren PCs ). sicherlich gibt es für AcroRd32.dll irgendwo ( Hersteller ? ) eine Beschreibung ( API ) und wenn nicht dann eben "COM Assistant". hier mal ein Snapshot mit der FindText Method
FindText.JPG
FindText.JPG (97.93 KiB) 10259 mal betrachtet
gruss by OHR
Jimmy
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Jimmy

habe mir wieder Zeit genommen das ActiveX-Problem mit Adobe weiter zu verfolgen.
Der "COMLicenceFinder" hat auch die "übliche" CLSID gefunden und bei Creatable "Yes" gezeigt.
Den "COM Assistant" habe ich auch installiert Was ich damit anfangen soll verschließt sich mir noch.

Habe schlussendlich immer noch das Problem, dass bei :Create(...) die Erstellung des ActiveXControls fehlschlägt:

Code: Alles auswählen

oControl := XbpActiveXControl():New( oForm:DrawingArea )
oControl:CLSID := "{BBAA0E44-3862-490C-8E63-AC2D2D6EF733}"
oControl:Create( , , { 10 , 60 } , { 610 , 370 } )
Könnte ein 64-bit Problem sein...
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Michael

Danke für den Hinweis auf SumatraPDF.

Ich MUSS (und will) mit dem Adobe Zeugs zurecht kommen.
Unter anderem schon deshalb, weil andere PDF-Viewer die Such- und Highlight-Funktionen einfach nicht in dieser Qualität haben.

Sonst könnte ich sicher auch etwas anderes verwenden...
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: Acrobat Objekt -> CreateObject()

Beitrag von AUGE_OHR »

Roland Gentner hat geschrieben:Habe schlussendlich immer noch das Problem, dass bei :Create(...) die Erstellung des ActiveXControls fehlschlägt:

Code: Alles auswählen

oControl := XbpActiveXControl():New( oForm:DrawingArea )
oControl:CLSID := "{BBAA0E44-3862-490C-8E63-AC2D2D6EF733}"
oControl:Create( , , { 10 , 60 } , { 610 , 370 } )
keine Ahnung wo du die CLSID her hast aber die ist IMHO falsch.
Es gilt immer noch die alte CLSID

Code: Alles auswählen

o:CLSID  := "{CA8A9780-280D-11CF-A24D-444553540000}"
Roland Gentner hat geschrieben:Könnte ein 64-bit Problem sein...
Gegenfrage : gibt es den Acrobat Reader als 64bit Version ?
gruss by OHR
Jimmy
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Jimmy

im Prinzip hast Du recht mit

Code: Alles auswählen

o:CLSID  := "{CA8A9780-280D-11CF-A24D-444553540000}"
Aber nachdem es nicht funktioniert könnte es auch ein anderer CLSID sein...
(Der von mir angegebene CLSID ist auch in Internet für 64-bit zu finden, geht aber auch nicht).
Auf die Schnelle habe ich nichts zu einem 64-bit Reader gefunden.

Werde aber doch nicht der einzige mit Windows 7/8 und 64-bit sein, deshalb wenn jemand das Thema verfolgt und interessiert ist teste einfach das Alaska-Sample selbst + wer Win 7/8.x 64-bit hat.
Sample liegt hier:
C:\Alaska\SOURCE\samples\activex\acrobat
Bin gespannt bei wem es geht mit 64-bit und WIn7/8.x!
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: Acrobat Objekt -> CreateObject()

Beitrag von AUGE_OHR »

Roland Gentner hat geschrieben:C:\Alaska\SOURCE\samples\activex\acrobat
Bin gespannt bei wem es geht mit 64-bit und WIn7/8.x!
selbstverständlich habe ich es getestet/am laufen sonst würde ich mir keinen Kommentar erlauben.
Roland Gentner hat geschrieben:Auf die Schnelle habe ich nichts zu einem 64-bit Reader gefunden.
unabhängig ob es eine 64bit Version gibt : DIE läuft nicht mit 32bit Xbase++

ich würde die Version deinstallieren und als User (!) und "runas Administrator" es neu installieren.

p.s. es gibt auch Administratoren die das ausführen von activeX verbieten.
gruss by OHR
Jimmy
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Acrobat Objekt -> CreateObject()

Beitrag von Rudolf »

Hallo,
mit der u.a. Funktion hat es bei mir bis jetzt überall problemlos funktioniert
Grüße
Rudolf

Code: Alles auswählen

function _CreateAcrobatControl( oDrawingArea,lSilent)
******************
Local oError, bSaveErrorBlock:=ErrorBlock({|oError| Break(oError)}) 
LOCAL oControl
lRetVal:= NIL
default lSilent to .f.
Begin Sequence
     oControl := XbpActiveXControl():new( oDrawingArea )
     oControl:CLSID  := "{CA8A9780-280D-11CF-A24D-444553540000}"
     oControl:create(,,,{oDrawingArea:currentSize()[1],oDrawingArea:currentSize()[2]} )
     oControl:SetShowToolBar( .T. )
     oControl:SetShowScrollbars( .T. )
     //dc_inspectobject(oControl)
     lRetVal := oControl
Recover Using oError
//   MsgBox("Error")
   lRetVal:= NIL
End

// Restore prior error block
ErrorBlock(bSaveErrorBlock)
if empty(lRetVal) .and. !lSilent
     wmeld("Acrobat ActiveX not installed!")
endif
Return lRetVal
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Jimmy
AUGE_OHR hat geschrieben:p.s. es gibt auch Administratoren die das ausführen von activeX verbieten.
Vielleicht liegt es wirklich an den Betriebssystem-/Domänen-Einstellungen.

Habe das Alaska-Sample jetzt auch auf verschiedenen PCs mit Win7 64-bit in anderen (Domänen-)Netzwerken getestet. Dort funktioniert es wirklich überall!!!
Nur auf den PCs in meinem Netzwerk nicht. Nicht als Domänen-User und nicht als Lokaler User, auch nicht mit und nicht ohne Admin-Rechte. Doch etwas verbogen? :angry4:
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Nachtrag:

Habe in meinem Netzwerk noch einen PC mit Win 7 32-bit gefunden. Da geht das Sample auch! Seltsam - wie passt das wieder zusammen... #-o
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: Acrobat Objekt -> CreateObject()

Beitrag von Koverhage »

Roland,

Vielleicht liegt es wirklich an den Betriebssystem-/Domänen-Einstellungen.
Oder an den Einstellungen der Windows-Firewall ?
Gruß
Klaus
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Hallo Klaus,

mit der Windows-Firewall mache ich nie etwas.
Außer entweder die Firewall ganz aus oder mindestens alles erlauben (rein wie raus).

Habe gerade nochmal getestet - MS-Firewall=AUS + Virenscanner=AUS - keine Änderung.
Daran liegt es scheinbar auch nicht...
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2932
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Acrobat Objekt -> CreateObject()

Beitrag von Wolfgang Ciriack »

... Reader zumindest einmal etwas aus dem Konfigurationsmenü heraus speichern musste... was wahrscheinlich die Heilung brachte.....In der Kategorie „Internet“ habe ich die drei gesetzten Haken zunächst weggemacht, dann gespeichert, anschließend wieder entfernt und erneut gespeichert. ... Seitdem funktioniert es
.
Das habe ich im Internet dazu gefunden, vielleicht mal probieren (falls nach Neuinstallation noch nicht geschehen).
Viele Grüße
Wolfgang
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: Acrobat Objekt -> CreateObject()

Beitrag von brandelh »

Roland Gentner hat geschrieben: mit der Windows-Firewall mache ich nie etwas.
Außer entweder die Firewall ganz aus oder mindestens alles erlauben (rein wie raus).
das ist aber ein grober Fehler, nur im Extremfall zum Testen würde ich kurzfristig die Firewall komplett abschalten, selbst hinter der Fritz-Box.
Es ist doch einfach einem Serverprogramm die Rechte zuzuordnen, die es braucht.
Gruß
Hubert
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Mit dem XbpActiveXcontrol() will es einfach nicht.
Aber mit der OLE bin ich etwas weiter, es öffnet sich wenigstens jetzt mit CreateObject( "AcroExch.App" ) + Show() der Acrobat.
"AcroExch.AVDoc" + Open() bringt zwar keinen Fehler aber das PDF wird nicht angezeigt.
DelUser01

Re: Acrobat Objekt -> CreateObject()

Beitrag von DelUser01 »

Nachtrag 1:

Habe inzwischen alle Adobe-Installationen von meinem Win 8 PC gelöscht und wieder installiert. Auch die verbundenen Netzwerklaufwerke.
Es hat sich was geändert/verbessert:
Melde ich mich mit dem Administrator lokal oder an der Domäne an geht ActiveX mit Acrobat und/oder Reader! (ging vorher auch nicht).
Melde ich mich mit meinen normalen Usernamen an (auch mit Admin-Rechten) geht es immer noch nicht!
Also doch eine Einstellungssache - aber wo und wie...

Nachtrag 2:
Liegt eindeutig an meinem Benutzerprofil. Jeder andere läuft jetzt auf dem PC mit dem ActiveX-Sample - nur meiner nicht.
Habe inzwischen das Benutzerprofil gelöscht und mit Aufwand wieder eingerichtet - geht trotzdem nicht...
Antworten