dateien mit standardprogramm öffnen
lima-city → Forum → Programmiersprachen → Basic
aufruf
bedarf
beliebige datei
beliebige dateien
code
datei
dialog
einfache prozedur
fehler
http
netten effekt
parameter
pfad
programm
shell
standardprogramm
string
test
tip
windows
-
weiß igendjemand wie ich eine beliebige datei mit vb6 mit dem standardprogramm öffnen kann
lg,
spckuntu -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
grizzlybaer schrieb:
meinst du sowas?
http://www.activevb.de/tipps/vb6tipps/tipp0001.html
Nö ;)
speckuntu schrieb:
weiß igendjemand wie ich eine beliebige datei mit vb6 mit dem standardprogramm öffnen kann
lg,
spckuntu
Ja weiß ich ;)
Du hast aber nicht explizit gesagt, dass du eine Antwort haben willst...
Überlege mal einfach: Wie öffnest du eine Datei auf deinem Computer? Wohl über den Windows-Explorer...
Also eine unfertige Beispiellösung:
Dim strExplorer As String strExplorer = Environ(\"SystemRoot\") & \"\\\\Explorer.exe\" Dim strFile As String strFile = \"C:\\\\Test.txt\" Shell strExplorer & \" \" & \"\"\"\" & strFile & \"\"\"\"
Wenn keine Standardanwendung zugeordnet ist, wird der \"Öffnen mit\"-Dialog angezeigt.
Zu ergänzen: Fehler- bzw. Ausnahmenbehandlung.
Beitrag geändert: 11.2.2008 18:19:22 von cbhp -
Einfache Prozedur für Öffnen mit Office-Programmen, beim Aufruf vollständigen Pfad der Office-Datei übergeben (kann bei Bedarf natürlich erweitert werden.
Sub testDokumentOeffnen()
DokumentOeffnen (\"C:\\temp\\Test.doc\")
End Sub
Public Sub DokumentOeffnen(pfad As String)
Dim app As String, ext As String
ext = UCase(Right(pfad, Len(pfad) - InStrRev(pfad, \".\")))
If ext = \"DOC\" Then app = \"Winword.exe\"
If ext = \"XLS\" Then app = \"Excel.exe\"
If ext = \"PPT\" Then app = \"Powerpnt.exe\"
app = app & \" \"\"\" & pfad & \"\"\"\"
Call Shell(app, 1)
Procedure_End:
Exit Sub
Procedure_Err:
MsgBox Err.Description
Resume Procedure_End
End Sub
-
Einfache Prozedur für Öffnen mit Office-Programmen, beim Aufruf vollständigen Pfad der Office-Datei übergeben (kann bei Bedarf natürlich erweitert werden.
Sub testDokumentOeffnen()
DokumentOeffnen (\"C:\\temp\\Test.doc\")
End Sub
Public Sub DokumentOeffnen(pfad As String)
Dim app As String, ext As String
ext = UCase(Right(pfad, Len(pfad) - InStrRev(pfad, \".\")))
If ext = \"DOC\" Then app = \"Winword.exe\"
If ext = \"XLS\" Then app = \"Excel.exe\"
If ext = \"PPT\" Then app = \"Powerpnt.exe\"
app = app & \" \"\"\" & pfad & \"\"\"\"
Call Shell(app, 1)
Procedure_End:
Exit Sub
Procedure_Err:
MsgBox Err.Description
Resume Procedure_End
End Sub
Standardprogramme ungleich Microsoft Office!
Mit deiner Lösung lassen sich nur fest definierte Dateitypen öffnen, aber sonst nichts. Stell dir mal vor, jeder Benutzer hat andere Standardanwendungen für den gleichen Dateityp...
Da ist die Lösung von mir mit der Parameterübergabe an den Windows-Explorer schon besser.
-
und wieso nicht einfach nur shell mit dem dateinamen?
-
und wieso nicht einfach nur shell mit dem dateinamen?
Weil wenn man beliebige Dateien über Shell aufrufen würde, z.B. die Datei \"file.xy2\" und keine Standardanwendung für diesen Dateityp registriert ist, ein Fehler auftritt.
Der Shell() Befehl ist eigentlich dafür da, um ausführbare Anwendungen zu starten (also Dateien mit der Endung .exe, .com, ...)
Außerdem leitest du durch einen Aufruf des Explorers, dem du die Datei als Parameter übergibst, die Fehlerbehandlung mit um, z.B. falls die Datei nicht geöffnet werden kann oder nicht vorhanden ist. Zusätzlich hast du einen netten Effekt bei XP und Vista: Falls die Datei von einem fremden Computer stammt, erscheint das Dialogfeld \"Möchten Sie diese Datei öffnen?\" bzw. die Benutzerkontensteuerung schaltet sich vor, falls bestimmte Rechte erforderlich sind.
Somit ist der Shell-Aufruf mit dem Explorer kombiniert die einfachste Variante. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage