Seite 1 von 1

Datei öffnen mit

Verfasst: So, 11. Mär 2018 11:35
von DelUser01
Hallo

wenn ich mit RunShell eine PDF-Datei anspreche wird diese mit dem Standard-Programm (z.B. Acrobat Reader) geöffnet.
Wenn ich diese Datei jetzt aber verschiedentlich z.B. mit Adobe Acrobat öffnen müsste- ohne zuvor das Standard-Programm umzustellen - gibt es da eine Funktion?

Eine Möglichkeit wäre natürlich, den User vorab zwischen Reader oder Acrobat wählen zu lassen.
Aber ich weiß doch nicht was auf jedem PC installiert ist und was der User als Standard verwendet.

Re: Datei öffnen mit

Verfasst: So, 11. Mär 2018 12:20
von Herbert
Am besten ist, du programmierst das selber aus. Kleine Radiobox und rufst entsprechend das Programm selber auf.

Re: Datei öffnen mit

Verfasst: So, 11. Mär 2018 13:27
von DelUser01
Hubert, vielleicht hat doch schon einer so etwas gebaut...

Re: Datei öffnen mit

Verfasst: So, 11. Mär 2018 18:05
von AUGE_OHR
DelUser01 hat geschrieben: So, 11. Mär 2018 11:35 wenn ich mit RunShell eine PDF-Datei anspreche wird diese mit dem Standard-Programm (z.B. Acrobat Reader) geöffnet.
Wenn ich diese Datei jetzt aber verschiedentlich z.B. mit Adobe Acrobat öffnen müsste- ohne zuvor das Standard-Programm umzustellen - gibt es da eine Funktion?
man müsste schon das Standart-Programm ändern
DelUser01 hat geschrieben:Eine Möglichkeit wäre natürlich, den User vorab zwischen Reader oder Acrobat wählen zu lassen.
Aber ich weiß doch nicht was auf jedem PC installiert ist und was der User als Standard verwendet.
statt

Code: Alles auswählen

@SHELL32:ShellExecuteA() und "open"
nimmst du

Code: Alles auswählen

@SHELL32:OpenAs_RunDLL() und 0 (zero)

Re: Datei öffnen mit

Verfasst: Mo, 12. Mär 2018 8:24
von Koverhage
Ich mach das so, der Anwender legt fest ob er einen anderen als den Standard verwenden will (hier als pdfextern deklariert)

Code: Alles auswählen

if fi->pdfextern
   ZeigePDFDatei(PfadName(cPDFName),Dateiname(cPDFName))
endif

Function ZeigePDFDatei()
cAcrobat := rtrim(fi->pdfviewer)
cPDF := chr(34)+cPDFPath+cPDFDatei+chr(34)  // die chr(34) == " ermöglichen Blanks im Namen !


if empty(cAcrobat) .or. !Fexists(cAcrobat)
   cAcrobat := GetStandardProgramm(cPDFPath, cPDFDatei)
endif

RunShell( cPDF, cAcrobat, NO )

Re: Datei öffnen mit

Verfasst: Mo, 12. Mär 2018 8:43
von brandelh
DelUser01 hat geschrieben: So, 11. Mär 2018 13:27 Hubert, vielleicht hat doch schon einer so etwas gebaut...
er heißt Herbert, ich bin Hubert ;-)

Ich würde im Programm einen Menüpunkt für die Vorauswahl des PDF Readers vorsehen, wenn die leer ist, ermittle den Standard Reader, ansonsten Pfad und EXE des gewünschten eintragen lassen und abspeichern.
man müsste schon das Standart-Programm ändern
das sollte man niemandem vorschreiben ;-)

Klaus war schneller, seine Lösung verwende ich auch, entweder die EXE mit Pfad vorgeben oder die Standard-EXE ermitteln, aber beide öffnen mit runshell die PDF auf gleiche Art.

Re: Datei öffnen mit

Verfasst: Mo, 12. Mär 2018 9:21
von Koverhage
Hubert,
ich glaube ein Teil davon ist von Dir ;-)
Bei mir kann jeder Anwender seinen bevorzugten PDF Reader benutzen. In der
User Datenbank ist angegeben PDFEXTERN Ja oder Nein. Bei Ja sollte er den
PDFVIEWER eintragen.

Re: Datei öffnen mit

Verfasst: Mo, 12. Mär 2018 10:19
von DelUser01
Hallo!
Danke für die Vorschläge, meine Frage zielte schon darauf ab, mit einer MS-API-Funktion z.B. den Explorer so zu öffnen:
ExplorerOpenWith.jpg
ExplorerOpenWith.jpg (64.92 KiB) 7778 mal betrachtet
Jimmys Vorschlag muss ich noch ausprobieren.

Re: Datei öffnen mit

Verfasst: Di, 13. Mär 2018 12:44
von Sören
Hallo Roland,

Jimmy hat es eigentlich schon gepostet, aber hier nochmal in Nicht-OTX-Syntax:

Code: Alles auswählen

// Vorgehen, um den "Öffnen mit ..." - Dialog anzuzeigen:

cFileName := "C:\Dateien\MeinDokument.pdf"

RunShell( "Shell32.dll,OpenAs_RunDLL " + cFileName, "Rundll32.exe" )

Re: Datei öffnen mit

Verfasst: Di, 13. Mär 2018 13:14
von Wolfgang Ciriack
Prima, danke, klappt gut, kann ich auch gebrauchen.

Re: Datei öffnen mit

Verfasst: Do, 15. Mär 2018 19:38
von DelUser01
Hallo Jimmy und Sören

das ist was ich meinte - Danke!