Exit-Methode beim (oder sagt man in) ActiveX-Object

Nutzung, Komponenten, .NET

Moderator: Moderatoren

notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Exit-Methode beim (oder sagt man in) ActiveX-Object

Beitrag von notloesung »

Hallo,

nach langer Zeit der Abwesenheit (hier im Forum :oops: ) und einer vorübergehenden Beschäftigung mit anderen Programmen und Programmierkrams (bei uns wird nicht nur in Xbase programmiert :roll: ) hab ich mal wider 'ne Frage fürs Forum.

Ich erstelle ein ActiveX-Object auf den AcrobatReader.
Mache dann damit dies und das.
Zum Schluß will ich es schließen. Dazu stellt das Objekt eine Exit()-Methode bereit. Doch bisher ist es mir nicht gelungen diese zu nutzen.
Ich kann das Programm nicht kompilieren. Denn sobald es auf die Exit() Anweisung läuft, kommt ein Error:
XBT0251: Reserved Keyword

Code: Alles auswählen

AcroExchApp := GetObject( NIL, "AcroExch.App" )
...
AcroExchApp:Exit()
Gibt es wohl eine Möglichkeit das irgendwie in einen Codeblock zu verpacken? Mir ist es bisher nicht gelungen.

Gruß,
Notloesung
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Beitrag von Wolfgang Ciriack »

Vielleicht probierst du mal Close statt exit ?
Viele Grüße
Wolfgang
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hi,

das :Close() habe ich schon probiert. Ergebnis ist ein Laufzeitfehler da Methode unbekannt.
oError:args :
-> VALTYPE: C VALUE: Close
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Unbekannter Name.
Methode ist f r dieses Objekt unbekannt
oError:filename : NIL
oError:genCode : NIL
oError:operation : Close
oError:osCode : -2147352570
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Notloesung.

Bist Du sicher, dass der Acrobat-Reader eine Exit-Methode zur Verfügung stellt? Ich bin das nämlich nicht. Es gibt möglicherweise ein Exit-Event, dem Du einen Codeblock zuweisen kannst, aber eigentlich schließt/beendet man ein Control mit :Destroy(). Auch Word, zum Beispiel, stellt keine Quit-Methode zur Verfügung, sondern einen entsprechenden Ereignisslot, den man bestücken kann:

Code: Alles auswählen

oWord:Quit := {||MsgBox('Word wird jetzt beendet'),oWord:Destroy()}
Herzlich,
Tom
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hi,
Tom hat geschrieben:Bist Du sicher, dass der Acrobat-Reader eine Exit-Methode zur Verfügung stellt?
Zu 99,9999999 % (laut Doku).

Ich bekomme das Schließen auch mit der DLL Funktion

Code: Alles auswählen

CloseHandle(nHandle)
hin, das Exit() würde aber einiges vereinfachen.

Wie gesagt, ich habe probiert das irgendwie mit einem Codeblock zu lösen, doch leider ohne Erfolg.
Werd wohl weiterhin darauf verzichten müssen :(

Gruß,
Notloesung
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Jaro,

schön, Dich hier wieder zu sehen 8) Habt Ihr mitbekommen, das wir wieder ein XUG-Treffen haben? Dieses Mal in Herford.

Zu Deinem Problem: Tom hat ganz Recht: So etwas bietet meines Wissens der Adobe Reader nicht an. Ich habe mir das Handbuch mal besorgt, wo alle Methoden zum ActiveX-Zugriff aufgeführt sind. Das sind garnicht mal so viele. Wenn Du möchtest, schick ich Dir das mal zu. Mußt mir nur eine Mail-Adresse geben, kannst Du ja über PM machen.

Jan
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Notloesung.

Ich habe die Acrobat-SDK-Dokumentation erguhgelt und dort keine EXIT-Methode gefunden:

http://www.adobe.com/devnet/acrobat/pdf ... erview.pdf

Mach doch mal spaßenshalber folgendes:

Code: Alles auswählen

oAcrobat:Exit := {||MsgBox('Hallo')}
Du wirst mit hoher Wahrscheinlichkeit beim Schließen des Readers eine Messagebox zu sehen bekommen. :wink:
Herzlich,
Tom
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Morgen,
Jan hat geschrieben:Tom hat ganz Recht: So etwas bietet meines Wissens der Adobe Reader nicht an.
Tom hat geschrieben:Ich habe die Acrobat-SDK-Dokumentation erguhgelt und dort keine EXIT-Methode gefunden:
Ich habe mir mit Hilfe des "HelpKit COM Assistenten" die Methoden angeschaut die in der AcroRead32.dll (Acrobat 8.0) zur Verfügung stehen. Dort ist auch eine Methode Exit() vorhanden.
Allerdings muss ich auch gestehen, dass ich verzweifelt versuche eine in der Hilfe aufgeführte PrintPages() Methode zu benutzen. Das ist mir bis dato ebenfalls nicht gelungen. Ich kann sie ansprechen, das Programm läuft sauber an der Stelle durch - es kommt aber kein Ausdruck raus.
Ob die Exit() Methode das tut was ich mir davon erhoffe kann ich nicht sagen, denn ich kann mein Programm (mit dem Aufruf dieser Methode) nicht kompilieren.
Viele andere Methoden, die ich ebenfalls der o.g. Hilfe entnommen habe funktionieren einwandfrei (z.B. ermitteln der Seitengröße).

Jan hat geschrieben:schön, Dich hier wieder zu sehen Habt Ihr mitbekommen, das wir wieder ein XUG-Treffen haben? Dieses Mal in Herford.
Nein bis jetzt noch nicht. Wir leben zwar noch, aber irgendwie ist die Zeit immer zu knapp um sich auch mal um ein paar schöne Dinge zu kümmern. Bei uns ist irgendwie immer viel zu viel los. Jedes Projekt welches wir anfangen - hätte schon "gestern" fertig sein müssen :wink:
Ich muss jetzt erst lesen wo und wann das Treffen stattfindet.

Gruß,
Notloesung
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Moin Jarek,
notloesung hat geschrieben:Ich muss jetzt erst lesen wo und wann das Treffen stattfindet.
am Samstag, 23.08., 14 Uhr in Herford.
Andreas wird bestimmt noch was öffentlich posten - auf der Webseite von Alaska wird es auch noch veröffentlicht werden - beizeiten.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Martin Altmann hat geschrieben:...auf der Webseite von Alaska wird es auch noch veröffentlicht werden - beizeiten.
Beizeiten ist jetzt :D

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Beitrag von Tom »

Hallo, Notloesung.

Auf Seite 26 der von mir verlinkten Doku finden sich alle Methoden, die das Control zur Verfügung stellt. Das ist "EXIT" nicht enthalten, "PrintPages" allerdings durchaus. Letzteres erwartet vermutlich einen Seitenbereich (1-55 o.ä.) als Parameter. Möglicherweise hast Du "EXIT" in irgendeiner DLL gefunden, die aber nicht notwendigerweise alle Methoden auch dem Control zur Verfügung stellt.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Tom,

zu Hause habe ich die Doku von Adobe, in der die zulässigen Methoden angegeben werden inkl. dem, was da dann übergeben werden kann/soll/muß. Ich schau mal, ob ich die heute Abend oder morgen früh ins Netz stelle und dann hier einen Link reinsetze. Denn einfach nur zu wissen, DASS es die Methode gibt, hilft ja nicht unbedingt weiter. Man muß ja auch wissen, wie man die verwendet.

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

Beitrag von brandelh »

Hi,

wenn die Zuweisung O:exit := {|| msgbox(...)} von oben funktioniert, ist exit entweder eine EXIT Function oder eine Membervariable, der man eine callback Funktion (hier callblock) übergeben kann, welche beim Ende des Programmes ausgeführt wird. Es ist durchaus wahrscheinlich, dass solche nicht direkt aufgerufen werden dürfen (können von Xbase++ ?) ...

Wichtig ist, dass es mit O:destroy() wohl sauber beendet wird (zumindest habe ich das so verstanden ...) und vorher noch kurz der Codeblock ausgeführt wird. :D
Gruß
Hubert
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Morgen,
Martin Altmann hat geschrieben:am Samstag, 23.08., 14 Uhr in Herford.
werde mich nächste Woche dazu äußern. Ich denke es könnte klappen, muss nur noch genau in Kalender nachschauen, da ich davor in Urlaub bin.



:evil: Der Reader treibt mich noch irgendwann in den Warnsinn :evil:
Tom hat geschrieben:Auf Seite 26 der von mir verlinkten Doku finden sich alle Methoden, die das Control zur Verfügung stellt.
Erst verstehe ich die Welt nicht mehr wirklich, dann fällt mir was auf und nun weis ich net wie ich es lösen soll.
Folgendes ist mein Problem (abgesehen von der Exit Methode, also ein weiteres):
Bevor ich ein PDF zum Drucker schicke (es wird als TIFF in eine Datei gedruckt) ermittle ich dessen Format. Das Auslesen funktioniert bei mir so:

Code: Alles auswählen

   oDoc := GetObject( NIL, "AcroExch.PDDoc" )

   IF NIL != oDoc
      IF oDoc:Open( pcFile )

         oPage := oDoc:AcquirePage(0)
         IF oPage != NIL
            oPageSize := oPage:GetSize()
            IF oPageSize != NIL
               aReturn[1] := oPageSize:x
               aReturn[2] := oPageSize:y
               oPageSize:destroy()
            ELSE
               ...
            ENDIF
            oPage:destroy()
         ELSE
            ...
         ENDIF
      ELSE
         ...
      ENDIF
      oDoc:close()
      oDoc:destroy()
   ENDIF
Das Funktioniert sauber - auf meinem Rechner :?
Auf einen anderen Rechner lässt sich die Größe eines PDFs so nicht ermitteln. Es liegt wohl daran (das ist der einzige Unterschied den ich bisher feststellen konnte) daran, dass auf meinem Rechner die Professional Version installiert ist, auf den anderen Rechner eben nicht. Somit finde ich auf meinem Rechner in der Registry auch entsprechende Schlüssel (AcroExch.AVDoc), auf den anderen nicht.
Nun habe ich keine Ahnung, auf welche andere Art und Weise ich die Größe ermitteln kann? In der Doku von Tom finde ich keine Methoden zum ermitteln solcher Eigenschaften.
Jan hat geschrieben:zu Hause habe ich die Doku von Adobe, in der die zulässigen Methoden angegeben werden inkl. dem, was da dann übergeben werden kann/soll/muß. Ich schau mal, ob ich die heute Abend oder morgen früh ins Netz stelle und dann hier einen Link reinsetze.
Jan, geht evtl. aus deiner Doku mehr hervor?

Ich bin auch für jegliche anderen Tipps dankbar. Ich muss - wie auch immer - an die Größe des PDFs ran.

Gruß,
Notloesung
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Moin Notloesung,

http://www.adobe.com/devnet/acrobat/pdf ... erence.pdf ab Seite 106 unten. Ich hoffe, das hilft Dir weiter. Ich selber habe davon mehrere Methoden verwendet, funktioniert einwandfrei.

Jan
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Tach,

vielen Dank für den Link.

Kannst du mir vielleicht verraten wie du dein Objekt aufbaust.
Mir ist das noch nicht ganz klar wie man da tatsächlich vorgeht (ich probiere ich immer aus).
Verwendest du CreateObject() oder GetObject()?

Notloesung
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Bei mir sieht das so aus:

Code: Alles auswählen

.
.
.
oDlg:configure()

// Warten, bis der Adobe Reader endlich geladen ist...
oStatic := XbpStatic():new(oDlg:drawingArea, ;
                           , ;
                           {MEMVAR->gaBildschirmGroesse[1] / 2 - 100, MEMVAR->gaBildschirmGroesse[2] / 2}, ;
                           {200, 25}, ;
                           {{XBP_PP_FGCLR, MEMVAR->gnFeldBeschriftung}, {XBP_PP_BGCLR, MEMVAR->gnBackground}})
oStatic:caption := "Handbuch wird geladen"
oStatic:create()

oDlg:show()

// Erzeugen eines "Acrobat Reader" ActiveX-Steuerelements als Child des Hauptfensters. Die Instanz
// wird mittels einer generischen Id (einer sog. "ProgId") erzeugt. Die ProgId findet sich in
// der Dokumentation des Steuerelements oder kann mittels eines Anzeigers für Type Library-Infor-
// mationen ermittelt werden.
oControl := XbpActiveXControl():new(oDlg:drawingArea)

// Zuweisen der generischen ProgId zur Identifikation des Adobe-ActiveX-Steuerelements
//oControl:CLSID  := "{CA8A9780-280D-11CF-A24D-444553540001}"
oControl:CLSID  := "{CA8A9780-280D-11CF-A24D-444553540000}"

// Erzeugen des ActiveX-Steuerelements. Zur Behandlung eines mögl. Fehlers, z.B. durch
// eine fehlenden Komponente, wird BEGIN/END SEQUENCE verwendet.
bOldError := ErrorBlock({|e| BREAK(e)})
BEGIN SEQUENCE
oControl:create( , , {0, 30},{MEMVAR->gaBildschirmGroesse[1] - 10, MEMVAR->gaBildschirmGroesse[2] - 60} )
RECOVER USING oError
lAdobeGeladen := .F.
END SEQUENCE

ErrorBlock(bOldError)

IF lAdobeGeladen == .F. //.AND. lFoxitGeladen == .F.
   MsgBox("Der Adobe Reader © wurde auf Ihrem Computer nicht gefunden." + ;
          Chr(13) + Chr(10) + ;
          Chr(13) + Chr(10) + ;
          "Dieses kostenfreie Programm wird jedoch zum Lesen des Handbuches im pdf-Format benötigt" + ;
          Chr(13) + Chr(10) + ;
          Chr(13) + Chr(10) + ;
          "Sie können den Adobe Reader © von der Installations-CD installieren", ;
          "Achtung")
   oDlg:destroy()
   SetzeFokusHoechstenBelegtenTab(oTabDlgHandbuch, ;
                                  oDlgAlt)
   Select(cSelect)
   oThread:quit()
ENDIF

// Die Toolbar anzeigen. Unbedingt machen, sonst gibt es Darstellungsprobleme!
oControl:SetShowToolBar(.T.)

// Die Scrollbars anzeigen
oControl:SetShowScrollbars(.T.)

// Die Anzeigegröße der Seiten auf 100 % einstellen
//oControl:zoom(100)

// 2-Seiten-Anzeige, 1. Seite rechts
oControl:setLayoutMode("TwoColumnRight")

// Die Anzeige an die Bildschirmgröße anpassen
oControl:setView("Fit")

// Die Wartemeldung löschen, sonst scheint die durch den Reader durch
oStatic:destroy()

// Die Handbuchdatei laden, wenn die existiert
IF File(IIf(cWas == "Handbuch", "Handbuch.pdf", "Einführung.pdf"))
   oControl:loadFile(MEMVAR->gcAppPfad + "Handbuch.pdf")
 ELSE
   MsgBox("Das Handbuch wurde nicht gefunden", "Achtung")
   PostAppEvent(xbeP_Activate, , , aoButHandbuch[1])
ENDIF
Ich habe dazu einfach das Alaska-Beispiel genommen und ein wenig für meine Zwecke modifiziert. Zusätzlich habe ich 2 Buttons eingebaut, mit denen der Benutzer schnell ein paar andere Einstellungen vornehmen kann. Da habe ich eingebaut:

Code: Alles auswählen

{|| oControl:setLayoutMode("OneColumn"), ;
               oControl:setZoom(100), ;
               SetAppFocus(oControl)}
und

Code: Alles auswählen

{|| oControl:setLayoutMode("TwoColumnRight"), ;
               oControl:setView("Fit"), ;
               SetAppFocus(oControl)}
Jan
Zuletzt geändert von Jan am Sa, 30. Aug 2008 9:42, insgesamt 2-mal geändert.
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hi,

@Jan:
Vielen Dank für das Beispiel.

Es schein mir so, als würde ich da irgendetwas nicht verstehen, nur was, das weis ich noch nicht genau.

Die Konvertierung der PDFs in TIFF ist nur ein kleiner Teil einer komplexen Software. Der kleine Teil um denn es hier geht ist folgender:
ein User wählt (aus eigener Software heraus) mehrere PDFs aus, die dann (ohne dass sie angezeigt werden) in TIFF-Format gedruckt werden.

Nun sind für mich dabei zwei Dinge wichtig.
1. Ich will/muss wissen wie groß die PDFs sind (x/y Ausdehnung)
2. Es währe schön wenn ich das Drucken direkt aus einem Objekt heraus (und nicht mir RunShell wie bisher) anstoßen könnte.

Zu 1:
Das ermitteln der Größe ist mir bisher nur dann gelungen wenn auf den Rechner eine Professional Version installiert ist. Dann habe ich vollen Zugriff auf das "AcroExch.PDDoc" Objekt. Dieses Objekt versteckt sich in der AcroRd32.dll. Die Datei existiert auch in den "normalen" Reader mit allen Methoden. Nur kann ich sie nicht ansprechen. Das Registrieren per Hand (regsvr32) ist mir nicht gelungen.
Mir ist leider nicht bekannt auf welche andere Art ich diese Info erhalten könnte. Ich kann nicht überall die Professional Version installieren.
Vielleicht hat da jem. einen klitzekleinen Tipp für mich.

Zu 2:
Hier muss ich etwas falsch machen. Denn wenn ich die Methode LoadFile() aufrufe bekomme ich folgenden Fehler:
oError:args :
-> VALTYPE: C VALUE: loadFile
-> VALTYPE: C VALUE: C:\support\Plotter\TEST_ZEICHNUNGEN\1.PDF
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Unbekannter Fehler

oError:filename : NIL
oError:genCode : NIL
oError:operation : loadFile
oError:osCode : -2147467259
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
Das Objekt erstelle ich folgendermaßen:

Code: Alles auswählen

   oDoc2 := CreateObject( "{CA8A9780-280D-11CF-A24D-444553540000}" )
   lRet := oDoc2:loadFile( pcFile )
Was mache ich an dieser Stelle falsch (oder was verstehe ich da nicht)?

Gruß,
Notloesung
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo,

keine Ahnung, was Du da machst in den beiden letzten Codezeilen. Was ist CreateObject() ? Mach es doch einfach mal so:

Code: Alles auswählen

oControl := XbpActiveXControl():new(oDlg:drawingArea)
oControl:CLSID  := "{CA8A9780-280D-11CF-A24D-444553540000}"
oControl:create( , , {0, 30}, {DeineBildschirmgröße} )
oControl:loadFile(DeineDatei)
Jan
notloesung
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 194
Registriert: Fr, 24. Feb 2006 8:09
Kontaktdaten:

Beitrag von notloesung »

Hi,

das Objekt ist wohl das Selbe. Egal auf welche Art und Weise ich es erstelle.
Auch mit deiner Methode komme ich nicht weiter. Dieselbe Fehlermeldung.
:roll: Muss wohl an - was weis ich - liegen. :roll:
Die Datei existiert, lässt sich manuell öffnen. Ist nicht geschützt oder ähnliches.

Gruß,
Notloesung
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hmmm, jetzt komme ich auch ins Grübeln. Gerade habe ich das ganze Projekt mal auf den Vista-Rechner kopiert. Und da meint der dann, daß er den Adobe nicht finden kann. Auch nach einem Rebuild will der nicht. Auf dem XP-Notebook läuft das ganze aber ohne Probleme.

Bei jedem mißglückten Start unter Vista (Business-Version) bleiben lt. Taskmanager gut 15 MB Adobe-Leiche im Speicher über. Wie denn das, wenn der garnicht geladen werden konnte?

Achso: Das Adobe-ActiveX-Sample aus der Alaska-Installation läuft problemlos.

??????????

Jan
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Jarek,

schau mal in Dein Postfach.

Jan
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Beitrag von stevie »

Tom hat geschrieben:Hallo, Notloesung.

Bist Du sicher, dass der Acrobat-Reader eine Exit-Methode zur Verfügung stellt? Ich bin das nämlich nicht. Es gibt möglicherweise ein Exit-Event, dem Du einen Codeblock zuweisen kannst, aber eigentlich schließt/beendet man ein Control mit :Destroy(). Auch Word, zum Beispiel, stellt keine Quit-Methode zur Verfügung, sondern einen entsprechenden Ereignisslot, den man bestücken kann:

Code: Alles auswählen

oWord:Quit := {||MsgBox('Word wird jetzt beendet'),oWord:Destroy()}
Laut Vba_Hilfe von Word schon und im Bsp von Alaska wird Quit() auch als Methode zum Schließen von Word benutzt.
und nicht nur das, wenn man Quit so wie du oben füllen will, geht das Ganze mit einem "Ich keine Quit-Eigenschaft" flöten.
Viele Grüße
Stevie
Dirk Jucknies
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 21
Registriert: Do, 20. Dez 2007 13:29

Hi Stevie

Beitrag von Dirk Jucknies »

Ich denke Du hast das Word-Objekt mit AutomationObject() erstellt, um aber Events benutzen zu können mußt die Klasse ActiveXObject() benutzen.
Gruße Dirk
stevie
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 17. Sep 2007 18:20
Wohnort: Senftenberg
Kontaktdaten:

Re: Hi Stevie

Beitrag von stevie »

Dirk Jucknies hat geschrieben:Ich denke Du hast das Word-Objekt mit AutomationObject() erstellt, um aber Events benutzen zu können mußt die Klasse ActiveXObject() benutzen.
Gruße Dirk
Ich mache das derzeit so.
oWord := CreateObject("Word.Application")
Wie denn dann?
Viele Grüße
Stevie
Antworten