Datei mit verkn. Programm öffnen |
|
Eine häufig gestellte Frage bezieht sich auf den Aufruf einer beliebigen Datei mit dem assoziierten (verknüpften) Programm. Dieses lässt sich z.B. über die Registry ermitteln, jedoch variiert der Installationspfad und auch das Programm ist nicht unbedingt auf jedem Rechner das gleiche. An dieser Stelle bietet das API ShellExecute eine bequeme Möglichkeit, das assoziierte Programm zu ermitteln und die Datei mit diesem Programm direkt zu öffnen. Für den Programmstart werden nicht alle API-Parameter benötigt, wichtig sind nur die Angaben der Datei-Operation (lpOperation) und des Dateinamens (lpFile). Der Parameter ShowTypeEnum bestimmt dann, wie die Datei angezeigt werden soll. Private 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 ShowTypeEnum As Long) _ As Long Private Enum ShowTypeEnum SW_HIDE = 0 SW_SHOWNORMAL = 1 SW_SHOWMINIMIZED = 2 SW_SHOWMAXIMIZED = 3 SW_SHOWNOACTIVATE = 4 SW_SHOW = 5 SW_MINIMIZE = 6 SW_SHOWMINNOACTIVE = 7 SW_SHOWNA = 8 SW_RESTORE = 9 SW_SHOWDEFAULT = 10 SW_FORCEMINIMIZE = 11 End Enum Der eigentliche Dateiaufruf erfolgt dann unter Angabe des Dateinamens und des Anzeigetype ShowTypeEnum Sub Dateianzeige() Dim sDatei, Err sDatei = "C:\SymboleXP.pdf" Err = ShellExecute(hWnd, "open", sDatei, vbNullString, vbNullString, SW_SHOW) If Err = "31" Then MsgBox "Keine Programmzuweisung gefunden." ElseIf Err <> "42" Then MsgBox "Es ist ein Fehler aufgetreten." End If DoEvents End Sub Der in vielen API-Aufrufen verwendete Parameter hWnd (Window-Handle) wird unter VBA fast nie unterstützt, so dass er durch 0& (da vom Typ 'Long') ersetzt werden kann. |
Besucher: 0 online | 0 heute | 0 diesen Monat | 2219119 insgesamt | Seitenaufrufe: 94 | Letzte Änderung: 24.06.2006 | © 2001-18 Christian Freßdorf | ||||
Glück ist der Stuhl, der plötzlich dasteht, wenn man sich zwischen zwei andere setzten wollte. George Bernhard Shaw |
powered by phpCMS and PAX |