Dateien mit Standardprogramm öffnen
Moderator: Moderatoren
- Wolfgang Ciriack
- 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:
Dateien mit Standardprogramm öffnen
Irgendwo hat schon jemand einmal gepostet, wie man beliebige Dateien mit dem in Windows hinterlegtem Standardprogramm aus Programm heraus starten kann, ich finde es aber nicht mehr. Kann mir da jemand helfen ?
Viele Grüße
Wolfgang
Wolfgang
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Wolfgang,
z.B. so:
Viele Grüße,
Martin
z.B. so:
Code: Alles auswählen
ort := "url.dll,FileProtocolHandler " + textpfad + "\" +katalog + "\" + katalog + ".rtf"
RunShell( ort, 'Rundll32.exe' )
Martin
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.
- Lewi
- 1000 working lines a day
- Beiträge: 830
- Registriert: Di, 07. Feb 2006 14:10
- Wohnort: Hamburg
- Danksagung erhalten: 2 Mal
Auf die Schnelle habe ich folgende Lösung mittels des Windows-API:
Rückgabewert:
Scheitert die Funktion z.B. wegen ungenügender freier Systemresourcen, so ist der Rückgabewert "0".
Existiert für die angegebene Datei keine verknüpfte Anwendung, gibt die Funktion den Wert "31" zurück.
Konnte die angegebene Datei nicht gefunden werden, so wird "2" zurückgegeben.
Wird das übergebende Standard Arbeitsverzeichniss nicht gefunden so ist die Rückgabe "3".
Wenn die gefundene Anwendung ungültig oder keine Win32 Anwendung ist, gibt die Funktion "11" zurück.
Bye the way: von Jimmy kommt in der Verbindung mit der Registry folgende Lösung:
Zu den Windows Modes:
versteckt das Fenster
SW_HIDE = 0
maximiert das Fenster
SW_MAXIMIZE = 3
minmiert das Fenster
SW_MINIMIZE = 6
aktiviert das Fenster
SW_NORMAL = 1
zeigt das Fenster
SW_SHOW = 5
stellt die Fenstergröße wieder her
SW_RESTORE = 9
zeigt das Fenster an und maximiert es
SW_SHOWMAXIMIZED = 3
zeigt das Fenster an und minimiert es
SW_SHOWMINIMIZED = 2
minimiert das Fenster und aktiviert es nicht
SW_SHOWMINNOACTIVE = 7
zeigt das Fenster an, aber aktiviert es nicht
SW_SHOWNA = 8
zeigt das Fenster an ohne es zu aktivieren
SW_SHOWNOACTIVATE = 4
zeigt das Fenster und aktiviert dies
SW_SHOWNORMAL = 1
Code: Alles auswählen
DLLFUNCTION FindExecutableA( cFileExtention, cPath, @cExe ) USING STDCALL FROM SHELL32.DLL
DLLFUNCTION ShellEcuteA( nWinHandle, cMode, cExe, cFile, cDir, nShow) USING STDCALL FROM SHELL32.DLL
#define SHELL_OPEN "open"
#define SHELL_PRINT "print"
#define SHELL_EXPLORE "explore"
// ShowWindow Modes
#define SW_HIDE 0
#define SW_SHOWNORMAL 1
#define SW_NORMAL 1
#define SW_SHOWMINIMIZED 2
#define SW_SHOWMAXIMIZED 3
#define SW_MAXIMIZE 3
#define SW_SHOWNOACTIVATE 4
#define SW_SHOW 5
#define SW_MINIMIZE 6
#define SW_SHOWMINNOACTIVE 7
#define SW_SHOWNA 8
#define SW_RESTORE 9
#define SW_SHOWDEFAULT 10
FUNC RunDefaultShellProg(cFile, cMode, nShow)
LOCAL cPath :=""
Local cExe := space(256)
LOCAL nPos, nRet
nPos := rat("\", cFile)
if nPos > 0
cPath := substr(cFile, 1, nPos)
cFile := substr(cFile, nPos+1)
endif
nRet := FindExecutableA(cFile, cPath, @cExe)
if nRet <= 32
RETURN nRet
endif
nRet := ShellExecuteA(GetApp():getHWnd(), cMode, cExe, cFile, cPath, nShow)
RETURN nRet
Rückgabewert:
Scheitert die Funktion z.B. wegen ungenügender freier Systemresourcen, so ist der Rückgabewert "0".
Existiert für die angegebene Datei keine verknüpfte Anwendung, gibt die Funktion den Wert "31" zurück.
Konnte die angegebene Datei nicht gefunden werden, so wird "2" zurückgegeben.
Wird das übergebende Standard Arbeitsverzeichniss nicht gefunden so ist die Rückgabe "3".
Wenn die gefundene Anwendung ungültig oder keine Win32 Anwendung ist, gibt die Funktion "11" zurück.
Bye the way: von Jimmy kommt in der Verbindung mit der Registry folgende Lösung:
Code: Alles auswählen
Reg := XbpReg():NEW(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Extensions)
IF ! oReg:Status()
RETURN .F.
ENDIF
oReg:ReadBinType("C")
// Beispiel suche "doc"
uVal := oReg:getValue('doc')
uVal := STRTRAN(uVal,'^.doc','')
// ruft zuletzt bearbeitetes Document auf und plaziert den Cursor
RunShell( "/mfile1 /mZurückEinfügemarke", uVal, .T. )
...
Zu den Windows Modes:
versteckt das Fenster
SW_HIDE = 0
maximiert das Fenster
SW_MAXIMIZE = 3
minmiert das Fenster
SW_MINIMIZE = 6
aktiviert das Fenster
SW_NORMAL = 1
zeigt das Fenster
SW_SHOW = 5
stellt die Fenstergröße wieder her
SW_RESTORE = 9
zeigt das Fenster an und maximiert es
SW_SHOWMAXIMIZED = 3
zeigt das Fenster an und minimiert es
SW_SHOWMINIMIZED = 2
minimiert das Fenster und aktiviert es nicht
SW_SHOWMINNOACTIVE = 7
zeigt das Fenster an, aber aktiviert es nicht
SW_SHOWNA = 8
zeigt das Fenster an ohne es zu aktivieren
SW_SHOWNOACTIVATE = 4
zeigt das Fenster und aktiviert dies
SW_SHOWNORMAL = 1
Zuletzt geändert von Lewi am Do, 15. Feb 2007 9:46, insgesamt 3-mal geändert.
- Wolfgang Ciriack
- 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: