Discussion:
JPG in fremde Anwendung oeffnen
(zu alt für eine Antwort)
Lupus Goebel
2006-07-29 08:39:43 UTC
Permalink
Morsche,

mit dem Code:

Code
\\\
Public Declare Function ShellExecute _
Lib "shell32.dll" _
Alias "ShellExecuteA" ( _
ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) _
As Long
Public Declare Function GetDesktopWindow _
Lib "user32" () As Long


Function FileOpen()
Dim strFileName As String
Dim rv As Long
strFileName = "E:\bilder\sabs.jpg" ' für jpg ist IrfanView Standart
'strFileName = "E:\bilder\sabs.pdf"
'strFileName = "E:\bilder\sabs.cdr"

rv = ShellExecute(GetDesktopWindow(), "Open", _
strFileName, "", "E:\bilder", 1)

End Function
///

kann ich eine Datei in seiner Standartanwendung öffnen. Bei JPG wäre das
IrfanView. Nun möchte ich aber das JPG mit Corel PHOTO-PAINT geöffnet
wird.

Wie bekomme ich das hin?
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Thomas Möller
2006-07-29 08:55:31 UTC
Permalink
Hallo Lupus,
[Code zu Shell-Execute]
kann ich eine Datei in seiner Standartanwendung öffnen. Bei JPG wäre
das IrfanView. Nun möchte ich aber das JPG mit Corel PHOTO-PAINT
geöffnet wird.
Du kannst Photo-Paint mit dem Shell-Befehl öffnen und dabei den Namen
Deiner Bilddatei als Parameter übergeben.

x=Shell("PfadZuPhotoPaint PfadZumDokument", vbMaximizedFocus)



CU
--
Thomas

Homepage: www.Team-Moeller.de
Lupus Goebel
2006-07-29 09:04:17 UTC
Permalink
Tach,

und danke.
Post by Thomas Möller
Hallo Lupus,
[Code zu Shell-Execute]
kann ich eine Datei in seiner Standartanwendung öffnen. Bei JPG wäre
das IrfanView. Nun möchte ich aber das JPG mit Corel PHOTO-PAINT
geöffnet wird.
Du kannst Photo-Paint mit dem Shell-Befehl öffnen und dabei den Namen
Deiner Bilddatei als Parameter übergeben.
x=Shell("PfadZuPhotoPaint PfadZumDokument", vbMaximizedFocus)
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Thomas Möller
2006-07-29 10:10:30 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
Post by Thomas Möller
Du kannst Photo-Paint mit dem Shell-Befehl öffnen und dabei den Namen
Deiner Bilddatei als Parameter übergeben.
x=Shell("PfadZuPhotoPaint PfadZumDokument", vbMaximizedFocus)
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
da fallen mir spontan folgende Möglichkeiten ein:

1. Du ermittelst den Pfad zu Photo-Paint auf Deinem System und gehst
davon as, dass er überall gleich ist.

2. Du lässt den Anwender den Pfad zu Photo-Paint in einer
Optionen-Tabelle speichern und liest ihn aus, wenn Du ihn brauchst.

3. Du startest eine Programmatische Suche nach der Exe von Photo-Paint
z.B. mit Application.FileSearch oder dem FileSystemObject.

Du kannst natürlich auch eine Kombination aus allen drei Varianten
fahren:
Als erstes prüfst Du, ob die Exe an dem von Dir vorgegebenen Ort
vorhanden ist. Wenn dort nichts zu finden ist prüfst Du, ob der User den
Pfad in die Optionen-Tabelle eingetragen hat. Wenn dort auch nichts zu
finden ist startest Du die Suche nach der Exe.

HTH
--
Thomas

Homepage: www.Team-Moeller.de
Lupus Goebel
2006-07-29 10:52:44 UTC
Permalink
Tach,


erst mal recht herzlichen dank für die schnelle Antwort.

Am 29.07.2006 12:10 schrieb Thomas Möller:

[..]
Post by Thomas Möller
Post by Lupus Goebel
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
1. Du ermittelst den Pfad zu Photo-Paint auf Deinem System und gehst
davon as, dass er überall gleich ist.
Davon kann ich nicht ausgehen, denn ich hatte schon geprüft ob die Pfade
alle gleich sind. Nicht mal die Photo-Paint Versionen sind gleich. Da
wird schon von Corel aus, jeweisl ein andere Pfad vorgeschlagen.
Post by Thomas Möller
2. Du lässt den Anwender den Pfad zu Photo-Paint in einer
Optionen-Tabelle speichern und liest ihn aus, wenn Du ihn brauchst.
Bei den Anwender handelt es sich um behinderte Menschen, da wird es
einige geben die damit überfordert sein werden. Aber auch einige von den
nicht Behinderten werden damit überfordert sein.
Post by Thomas Möller
3. Du startest eine Programmatische Suche nach der Exe von Photo-Paint
z.B. mit Application.FileSearch oder dem FileSystemObject.
Das könnte das System recht lahm legen, oder?

[...]
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Lupus Goebel
2006-07-29 11:10:14 UTC
Permalink
Tach,

Am 29.07.2006 12:52 schrieb Lupus Goebel:

[...]
Post by Lupus Goebel
Post by Thomas Möller
3. Du startest eine Programmatische Suche nach der Exe von Photo-Paint
z.B. mit Application.FileSearch oder dem FileSystemObject.
Das könnte das System recht lahm legen, oder?
Obwohl, ich muss ja nur einmal suchen und den Pfad kann ich dann ja im
Backend hinterlegen.
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Henry Habermacher [MVP Access]
2006-07-31 13:14:45 UTC
Permalink
Hallo Lupus
Post by Lupus Goebel
Post by Lupus Goebel
Das könnte das System recht lahm legen, oder?
Obwohl, ich muss ja nur einmal suchen und den Pfad kann ich dann ja im
Backend hinterlegen.
Eher in der lokalen Kopie der Frontend (FAQ 1.35), sonst haben ja wieder
alle den gleichen Pfad.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Lupus Goebel
2006-07-31 16:53:33 UTC
Permalink
Tach,

Am 31.07.2006 15:14 schrieb Henry Habermacher [MVP Access]:
[..]
Post by Henry Habermacher [MVP Access]
Post by Lupus Goebel
Obwohl, ich muss ja nur einmal suchen und den Pfad kann ich dann ja im
Backend hinterlegen.
Eher in der lokalen Kopie der Frontend (FAQ 1.35), sonst haben ja wieder
alle den gleichen Pfad.
Nö, ich habe da eine Tabelle, da habe ich verschiedene Einstellungen für
den User hinterlegt habe. Denn wenn ich auf die Idee komme das Frontend
total um zubauen, würden ja jedes mal wenn ich das neu verteile wieder
überschreiben.
Na ja, nicht ich verteile. Ich sende das Frontend per e-Mail und lasse
verteilen.

Aber sehr aufmerksam von Dir, Danke.
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
F.-J.Stiensmeier
2006-07-29 11:14:53 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
3. Du startest eine Programmatische Suche nach der Exe von Photo-Paint z.B. mit Application.FileSearch oder dem FileSystemObject.
Das könnte das System recht lahm legen, oder?
Ja, aber auch nur einmal, danach schreibst du den Pfad in die Optionen Tabelle. Es wird ja nicht davon auszugehen sein, daß das
Programm permanent verschoben wird.

FJS
Olaf Rabbachin
2006-07-29 10:33:58 UTC
Permalink
Hi,
Post by Lupus Goebel
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
ich kenne Photo-Paint nicht (du meinst nicht zufällig <Paint>, das mit
Windows ausgeliefert wird ..?), aber mach' dich doch mal auf die Suche nach
einem entsprechenden Eintrag in der Registry - den könntest du dann
entsprechend auslesen.

Bis dann,
Olaf
--
My .02: www.Resources.IntuiDev.com
Lupus Goebel
2006-07-29 10:48:00 UTC
Permalink
Tach,
Post by Olaf Rabbachin
Hi,
Post by Lupus Goebel
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
ich kenne Photo-Paint nicht (du meinst nicht zufällig <Paint>, das mit
Windows ausgeliefert wird ..?),
Nö, das heißt genau genommen: "Corel Photo-Paint".
Post by Olaf Rabbachin
aber mach' dich doch mal auf die Suche nach
einem entsprechenden Eintrag in der Registry - den könntest du dann
entsprechend auslesen.
Habe ich noch nie gemacht, muss mal Tante Google fragen ob sie mir dazu
was sagen kann.
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Peter Doering
2006-07-29 11:30:27 UTC
Permalink
Hallo,
Post by Lupus Goebel
Post by Olaf Rabbachin
aber mach' dich doch mal auf die Suche nach
einem entsprechenden Eintrag in der Registry - den könntest du dann
entsprechend auslesen.
Habe ich noch nie gemacht, muss mal Tante Google fragen ob sie mir dazu
was sagen kann.
http://www.mvps.org/access/api/api0015.htm

Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
Lupus Goebel
2006-07-29 13:37:36 UTC
Permalink
Hallo Tante ;-)

Am 29.07.2006 13:30 schrieb Peter Doering:

[..]
Post by Peter Doering
Post by Lupus Goebel
aber mach' dich doch mal auf die Suche nach einem entsprechenden
Eintrag in der Registry - den könntest du dann entsprechend
auslesen.
Habe ich noch nie gemacht, muss mal Tante Google fragen ob sie mir
dazu was sagen kann.
http://www.mvps.org/access/api/api0015.htm
Ahja und danke.
Habe nun es so gemacht
\\\
Debug.Print fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"Applications\CORELPP.EXE\shell\Open\command", "")

' Pfad beim Lupus zu CorelPP.exe
' C:\Programme\Corel\Corel Graphics 12\Programs\CorelPP.exe
///

Dait erhalte ich "C:\Programme\Corel\Corel Graphics
12\Programs\CorelPP.exe" als ergebnis.

Zuvor hatte ich mit
\\\
strtVer = fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"CorelPHOTOPAINT.Application\CurVer", "")
///

Die Corelversion ausgelesen und dann mit

\\\
Debug.Print fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"CorelPHOTOPAINT.Application.12\Shell\Open\Command", "")
///

Versucht ein Ergebnis zu bekommen, da hatte ich jedoch eine Fehlermeldung.


Nun hoffe ich das alle CorelPHOTOPAINT Versionen "CORELPP.EXE" heißen,
dann müßte es doch Funktionieren?
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Frank Müller
2006-07-29 18:21:38 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
Habe nun es so gemacht
\\\
Debug.Print fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"Applications\CORELPP.EXE\shell\Open\command", "")
' Pfad beim Lupus zu CorelPP.exe
' C:\Programme\Corel\Corel Graphics 12\Programs\CorelPP.exe
///
Bei mir lautet der Dateiname aber
D:\Programme\Corel\Graphics10\Programs\photopnt.exe
Also nicht CorelPP.exe

Ich würde das vielleicht so lösen:
Potopaint hat ja als Standardendung *.cpt für die Dateien.
Du könntest jetzt zuerst prüfen über die Registry, welche Anwendung als
Standard mit cpt verknüpft ist und wo sich die dazugehörige exe befindet.

Im Deklarationsteil:
Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) As Long

Dann eine Funktion:
Public Function AnwendungFuerDatei(ByVal Datei As String) _
As String

'Datei: Pfad+Dateinamen einer existierenden Datei

Dim Pfad As String
Pfad = Space$(256)
FindExecutable Datei, vbNullString, Pfad
If Pfad <> "" Then
Pfad = Left$(Pfad, InStr(Pfad, vbNullChar) - 1)
End If
If UCase$(Pfad) = UCase$(Datei) Then Pfad = ""

AnwendungFuerDatei = Pfad
End Function

Aufrufen dann z.B. mit:
WoIstCorel = AnwendungFuerDatei("C:\Test.cpt")

Wenn du das hast, kannst du Photopaint auch mit deiner jpg Datei öffnen.
Post by Lupus Goebel
Nun hoffe ich das alle CorelPHOTOPAINT Versionen "CORELPP.EXE" heißen,
dann müßte es doch Funktionieren?
Eben nicht, da zumindest bis Version 10 einschl. die Exe halt photopnt.exe
heißt.

Gruß,
Frank
Lupus Goebel
2006-07-29 19:04:31 UTC
Permalink
Abend,
Post by Thomas Möller
Hallo Lupus,
Post by Lupus Goebel
Habe nun es so gemacht
\\\
Debug.Print fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"Applications\CORELPP.EXE\shell\Open\command", "")
' Pfad beim Lupus zu CorelPP.exe
' C:\Programme\Corel\Corel Graphics 12\Programs\CorelPP.exe
///
Bei mir lautet der Dateiname aber
D:\Programme\Corel\Graphics10\Programs\photopnt.exe
Also nicht CorelPP.exe
Mist.
Post by Thomas Möller
Potopaint hat ja als Standardendung *.cpt für die Dateien.
Du könntest jetzt zuerst prüfen über die Registry, welche Anwendung als
Standard mit cpt verknüpft ist und wo sich die dazugehörige exe befindet.
Private Declare Function FindExecutable Lib "shell32.dll" _
Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) As Long
Public Function AnwendungFuerDatei(ByVal Datei As String) _
As String
'Datei: Pfad+Dateinamen einer existierenden Datei
Dim Pfad As String
Pfad = Space$(256)
FindExecutable Datei, vbNullString, Pfad
If Pfad <> "" Then
Pfad = Left$(Pfad, InStr(Pfad, vbNullChar) - 1)
End If
If UCase$(Pfad) = UCase$(Datei) Then Pfad = ""
AnwendungFuerDatei = Pfad
End Function
WoIstCorel = AnwendungFuerDatei("C:\Test.cpt")
Wobei ich hier erst mal eine vorhandene Datei "C:\Test.cpt" haben
müsste. Kann ich das auch anders auslesen?


[...]

Oder:
\\\
Function FileOpen()
Dim strFileName As String
Dim x As Long
Dim strShell As String
Dim strApp As String

strFileName = "E:\bilder\sabs.jpg"
' Auslesen welche Anwendung für .cpt Dateien registriert ist
strApp = fReturnRegKeyValue(HKEY_CLASSES_ROOT, ".cpt\ShellNew", "")

' Auslesen wie der Pfad für die Anwendung heißt
strShell = fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"" & strApp & "\Shell\Open\Command", "")

' Zusammenstellen des String für die Shellanweisung
strShell = Mid(Left(strShell, Len(strShell) - 6) & " " & strFileName, 2)

x = Shell("" & strShell & "", vbMaximizedFocus)

End Function
///

Das funktioniert bei mir. Nur bei mir??
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Frank Müller
2006-07-29 21:38:27 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
Post by Frank Müller
Bei mir lautet der Dateiname aber
D:\Programme\Corel\Graphics10\Programs\photopnt.exe
Also nicht CorelPP.exe
Mist.
Tja kann man nichts machen. Und ich hoffe für dich, dass das mit dem .cpt in
allen Versionen so ist. Also von 4 - 10 ist es so, höhere habe ich hier
jetzt nicht aber ich glaube das ist immer noch so.
Post by Lupus Goebel
Post by Frank Müller
Potopaint hat ja als Standardendung *.cpt für die Dateien.
Du könntest jetzt zuerst prüfen über die Registry, welche Anwendung
als Standard mit cpt verknüpft ist und wo sich die dazugehörige exe
befindet.
Wobei ich hier erst mal eine vorhandene Datei "C:\Test.cpt" haben
müsste. Kann ich das auch anders auslesen?
Na und? Mach dir doch einfach mit VBA eine z.B. im Temp Verzeichnis oder
sonst irgendwo, wo du Schreibberechtigung hast. Das muß ja keine echte cpt
Datei sein, das kann eine leere Textdatei sein die halt die Endung cpt hat.
Brauchst du ja auch nur einmalig zu machen und kannst sie für jeden Aufruf
später wieder verwenden. (Natürlich prüfen ob noch da ansonsten neu
erstellen)
Bei meinem Beispiel wird NICHT abgeprüft ob das eine echte cpt Datei ist die
auch von Corel geöffnet werden könnte.
Post by Lupus Goebel
strFileName = "E:\bilder\sabs.jpg"
' Auslesen welche Anwendung für .cpt Dateien registriert ist
strApp = fReturnRegKeyValue(HKEY_CLASSES_ROOT, ".cpt\ShellNew", "")
Und welchen Inhalt hat dann das strApp bei dir?
Bei mir liefert das z.B. CorelPhotoPaint.Image.10
Post by Lupus Goebel
' Auslesen wie der Pfad für die Anwendung heißt
strShell = fReturnRegKeyValue(HKEY_CLASSES_ROOT, _
"" & strApp & "\Shell\Open\Command", "")
Und den Key gibt es bei mir dann schon nicht mehr.
Post by Lupus Goebel
Das funktioniert bei mir. Nur bei mir??
Ob nur bei dir weiß ich natürlich nicht, bei mir jedenfalls nicht.
Und was ich da auch kurios finde:
Bei einem Rechner steht dann in strApp: CorelPhotoPaint.Image.10
Bei einem anderen steht: Corel PHOTO-PAINT 10.0-Bild
Beide Rechner gleiches BS, und deutsches Corel. Der Unterschied ist nur der,
dass bei dem einen einen Corel 10 frisch installiert wurde und beim anderen
immer Updates gemacht wurden von der Vorversion.

Aber vielleicht noch eine ganz andere Idee.
Corel ist doch auch VBA fähig. Also kannst du über CreateObjekt Corel
starten und dann deine jpg Datei laden. Je nachdem warum du Corel aus Access
heraus starten möchtest, kannst du dann auch gleich das Bild per VBA
bearbeiten, wieder speichern usw. Denn Corel ist ja bei dir sowieso
Systemvorraussetzung für deine Access Anwendung. Dann hättest du dir die
ganze Sucherei erspart welcher Dateityp mit welcher Dateiendung verknüpft
ist usw. Halt nur so eine Idee...

Gruß,
Frank
Lupus Goebel
2006-07-31 20:31:44 UTC
Permalink
Abend,

Am 29.07.2006 23:38 schrieb Frank Müller:

[...]
Post by Frank Müller
Post by Lupus Goebel
Wobei ich hier erst mal eine vorhandene Datei "C:\Test.cpt" haben
müsste. Kann ich das auch anders auslesen?
Na und? Mach dir doch einfach mit VBA eine z.B. im Temp Verzeichnis
oder sonst irgendwo, wo du Schreibberechtigung hast. Das muß ja keine
echte cpt Datei sein, das kann eine leere Textdatei sein die halt die
Endung cpt hat. Brauchst du ja auch nur einmalig zu machen und kannst
sie für jeden Aufruf später wieder verwenden. (Natürlich prüfen ob
noch da ansonsten neu erstellen) Bei meinem Beispiel wird NICHT
abgeprüft ob das eine echte cpt Datei ist die auch von Corel geöffnet
werden könnte.
Stimmet, habe nun deinen Vorschlag genommen und werde es die Tage wissen
ob es tut.

Danke.

[...]
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Frank Müller
2006-07-31 21:33:14 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
Abend,
Stimmet, habe nun deinen Vorschlag genommen und werde es die Tage
wissen ob es tut.
Ja sag mal bescheid, würde mich auch interessieren.
Ansonsten kannst du ja auch mal in der Newsgroup zu Corel fragen, vielleicht
haben die ja auch noch andere Ideen. Corel ist ja hier logischerweise eher
ein Randthema.

Gruß,
Frank
Henry Habermacher [MVP Access]
2006-07-31 13:13:27 UTC
Permalink
Hallo Lupus
Post by Lupus Goebel
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
Hat PhotoPaint eine Objektbibliothek? Falls ja, lege ein neues Objekt an und
öffne darin die JPEG Datei mittels OLE Automatisierung. Ich kann's nicht
ausprobieren, da ich Photopaint nicht habe.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Lupus Goebel
2006-07-31 16:55:11 UTC
Permalink
Tach,
Post by Thomas Möller
Hallo Lupus
Post by Lupus Goebel
Leider kenne ich den Pfad zu Photo-Paint nicht. Die Anwendung soll auf
ein paar verschiedene Rechner laufen. Die Herren haben ihr Photo-Paint
nicht alle im gleichen Verezeichnis. Aber alle haben Photo-Paint, das
ist sicher.
Hat PhotoPaint eine Objektbibliothek?
Mh, dieses Corel kann man auch Installieren ohne das es VBA fähig ist.
Ob es dann dennoch eine Objektbibliothek hat weiss ich nicht? Da bin ich
zu blond zu ;-)

[...]
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Frank Müller
2006-07-31 19:31:29 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
Tach,
Post by Henry Habermacher [MVP Access]
Hat PhotoPaint eine Objektbibliothek?
Mh, dieses Corel kann man auch Installieren ohne das es VBA fähig ist.
Ob es dann dennoch eine Objektbibliothek hat weiss ich nicht? Da bin
ich zu blond zu ;-)
Ist egal ob VBA bei Corel installiert ist oder nicht.

Set CorelTest = CreateObject("CorelPhotopaint.Application")
CorelTest.OpenDocument "C:\Test01.jpg"

funktioniert jedenfalls auf meinem Testrechner mit Corel 10 ohne
installiertes VBA

Gruß,
Frank
Lupus Goebel
2006-07-31 20:29:28 UTC
Permalink
Abend,

Am 31.07.2006 21:31 schrieb Frank Müller:

[..]
Post by Frank Müller
Post by Lupus Goebel
Post by Henry Habermacher [MVP Access]
Hat PhotoPaint eine Objektbibliothek?
Mh, dieses Corel kann man auch Installieren ohne das es VBA fähig
ist. Ob es dann dennoch eine Objektbibliothek hat weiss ich nicht?
Da bin ich zu blond zu ;-)
Ist egal ob VBA bei Corel installiert ist oder nicht.
Wie ich schon sachte: Da bin ich zu blond zu ;-)
Post by Frank Müller
Set CorelTest = CreateObject("CorelPhotopaint.Application")
CorelTest.OpenDocument "C:\Test01.jpg"
funktioniert jedenfalls auf meinem Testrechner mit Corel 10 ohne
installiertes VBA
Falls ich meinen ollen 200 Mhz Rechner mit Corel 6 wieder zum laufen
bringe, werde ich es mal auf dem Testen.

Mal sich verbeugt und Danke sagt.
--
MfG - Lupus Goebel
Der Sumpf- und Morasthobbybastler und Anfaenger mit
Wissensdurst (http://www.lupusdw.de)
Meine private FAQ http://www.lupusdw.de/faq
Frank Müller
2006-07-31 21:23:51 UTC
Permalink
Hallo Lupus,
Post by Lupus Goebel
Post by Frank Müller
Set CorelTest = CreateObject("CorelPhotopaint.Application")
CorelTest.OpenDocument "C:\Test01.jpg"
funktioniert jedenfalls auf meinem Testrechner mit Corel 10 ohne
installiertes VBA
Falls ich meinen ollen 200 Mhz Rechner mit Corel 6 wieder zum laufen
bringe, werde ich es mal auf dem Testen.
Mit Corel 6 wird das eher nicht klappen.
Ich weiß nicht, ob Version 6 schon VBA fähig war. Soweit ich mich erinnere
gab es damals nur das Corel Script (*.csc Dateien) VBA kam erst später. Aber
wie weit mußt du denn zurück gehen bei den Versionen deiner Anwender?
Post by Lupus Goebel
Mal sich verbeugt und Danke sagt.
Bitteschön

Gruß,
Frank
Henry Habermacher [MVP Access]
2006-08-01 02:15:28 UTC
Permalink
Hallo Frank
Post by Frank Müller
Mit Corel 6 wird das eher nicht klappen.
Ich weiß nicht, ob Version 6 schon VBA fähig war. Soweit ich mich
erinnere gab es damals nur das Corel Script (*.csc Dateien) VBA kam
erst später. Aber wie weit mußt du denn zurück gehen bei den
Versionen deiner Anwender?
Du machst da ein komplettes durcheinander. Das hat mit VBA überhaupt nichts
zu tun!

Schau' doch mal in die möglichen Referenzen rein. Die wenigsten
Objektbibliotheken verweisen auf Anwendungen/DLLs, welche kein VBA drin
haben.

Das einzige was zählt ist, ob die Anwendung sich gegenüber Windows outed und
Objekte, Methoden und Eigenschaften nach aussen öffentlich deklariert, so
dass diese von aussen her aufgerufen werden können. Dafür ist COM zuständig
(Common Object Model). Die Anwendung gibt dabei bei der Installation Windows
bekannt, welche Objekte, Methoden und Eigenschaften es exposen will. Was die
Anwendung dahinter macht, wenn Du eines der Objekte instanziierst und dann
damit arbeitest, geht Dich grundsätzlich nichts an. Das kann selbst in
Assembler geschrieben sein. Wichtig ist einzig, dass es das macht, was Du
willst. Und selbst wenn die Anwendung den VBA Interpreter integriert hat,
wirst Du kaum Möglichkeit finden, dieses VBA zu starten oder zu verwenden.
VBA oder eine andere Programmiersprache, welche die COM Modelle anzapfen
kann muss auf dem OLE Client, nicht auf dem OLE Server laufen.

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Henry Habermacher [MVP Access]
2006-08-01 02:08:08 UTC
Permalink
Hallo Lupus
Post by Lupus Goebel
Mh, dieses Corel kann man auch Installieren ohne das es VBA fähig ist.
Ob es dann dennoch eine Objektbibliothek hat weiss ich nicht? Da bin
ich zu blond zu ;-)
Niemand schreibt was von VBA. Wenn Corel PhotoPaint eine Objekt Bibliothek
hat, ist diese im Object Browser sichtbar. Einfach diesen mal starten und
schauen, ob es da was mit Corel oder PhotoPaint gibt. Falls ja, eine
Referenz darauf bei den VBA-Referenzen hinzufügen und schon liegt Dir das
ganze Objekt Modell zu füssen.
Wenn dann alles läuft, auf Late Binding umstellen. Dies hat den Vorteil,
dass die Anwendung dann auch läuft, wenn PhotoPaint nicht installiert ist
und Du dann einen entsprechenden Fehler ausgeben kannst. Wie's geht, wurde
ja bereits geschrieben (CreateObject).
IMHO ist das der einzig richtige Ansatz, alles andere ist ein Gewurstel,
solange es den offiziellen weg über die Object Library gibt.

groups.google.de sei Dein Freund

Gruss
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com (neu mit Suchfunktion!)
OH: Online Hilfe von Microsoft Access (Taste F1)
Downloads: http://www.dbdev.org
Henry Habermacher [MVP Access]
2006-08-01 02:21:28 UTC
Permalink
Ich mach mal kurz die Ingrid
Post by Henry Habermacher [MVP Access]
Niemand schreibt was von VBA. Wenn Corel PhotoPaint eine Objekt
Bibliothek hat, ist diese im Object Browser sichtbar. Einfach diesen
mal starten und schauen, ob es da was mit Corel oder PhotoPaint gibt.
Die Idee wäre schon richtig, Henry, aber umgekehrt:
Zuerst mit Ctrl+G den VBA Editor starten, dann über Extras - Referenzen
schauen, wie sich Corel und PhotoPaint im COM Broker ge-outed hat. Dann die
Häckchen dort reinmachen, wo es potentiell Objekte, Methoden und
Eigenschaften drin hat, die zweckdienlich sein können und die Referenzen
wieder schliessen.

Erst dannach den Object Browser mit F2 starten und mal genauer reinschauen,
was denn da so vorhanden ist. Ist wie damals, als Columbus Amerika entdeckt
hat. Tendenziell wird es da irgendwas wie eine Documents Collection geben
oder ganz einfach die Methode Open oder OpenDocument, welche dann ein
Dokument zurückliefert. Dann allenfalls noch den OLE Server mit .Visible
sichtbar machen, wie dies bei Word und Excel notwendig ist.
Viele modernere Anwendungen haben diese Möglichkeiten bereitgestellt.

Gruss

Ingrid

Loading...