vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Dateisystem · Dateien allgemein   |   VB-Versionen: VB4, VB5, VB624.04.01
"Öffnen mit..."-Dialog bei Bedarf autom. anzeigen

Hier wird gezeigt, wie man bei unbekannten Dateitypen autom. den Datei-Verknüpfungs-Dialog (Öffnen mit...) aktivieren kann.

Autor:   Heinz PrelleBewertung:     [ Jetzt bewerten ]Views:  48.630 
www.visual-basic5.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Bekanntlich wird beim Doppelklicken auf eine Datei entweder diese direkt ausgeführt (falls es sich um eine EXE- oder eben ausführbare Datei handelt) oder es wird die zu dieser Datei im System gespeicherte verknüpfte Anwendung geöffnet und die Datei dann als Parameter an die Anwendung übergeben (z.B. wird eine .doc-Datei autom. mit WordPad oder MS-Word geöffnet). Ist dem System der Dateityp nicht bekannt, so zeigt Windows von Haus aus den Verknüpfungs-Dialog (Öffnen mit...) an. Genau dieses Verhalten können auch Sie in Ihre eigenenen Anwendungen integrieren. Der nachfolgende Tipp zeigt wie's geht.

' zunächst die benötigten API-Deklarationen
Private Declare Function ShellExecute Lib "shell32.dll" _
  Alias "ShellExecuteA" ( _
  ByVal hWnd As Long, _
  ByVal lOperation As String, _
  ByVal lpFile As String, _
  ByVal lpParameters As String, _
  ByVal lpDirectory As String, _
  ByVal nShowCmd As Long) As Long
 
Private Declare Function GetSystemDirectory Lib "kernel32" _
  Alias "GetSystemDirectoryA" ( _
  ByVal lpBuffer As String, _
  ByVal nSize As Long) As Long
 
Private Declare Function GetDesktopWindow Lib "user32" () As Long
 
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_NOTFOUND = 2
 
' Dokument öffnen und ggf. autom. den
' "Öffnen mit..." - Dialog anzeigen
Private Sub DocumentOpen(sFilename As String)
  Dim sDirectory As String
  Dim lRet As Long
  Dim DeskWin As Long
 
  DeskWin = GetDesktopWindow()
  lRet = ShellExecute(DeskWin, "open", sFilename, _
    vbNullString, vbNullString, vbNormalFocus)
 
  If lRet = SE_ERR_NOTFOUND Then
    ' Datei nicht gefunden
 
  ElseIf lRet = SE_ERR_NOASSOC Then
    ' Wenn die Dateierweiterung noch nicht bekannt ist...
    ' wird der "Öffnen mit..."-Dialog angezeigt.
    sDirectory = Space(260)
    lRet = GetSystemDirectory(sDirectory, Len(sDirectory))
    sDirectory = Left(sDirectory, lRet)
    Call ShellExecute(DeskWin, vbNullString, _
      "RUNDLL32.EXE", "shell32.dll,OpenAs_RunDLL " & _
      sFilename, sDirectory, vbNormalFocus)
  End If
End Sub

Beispielsaufruf

DocumentOpen App.Path & "\test.dat"

Dieser Tipp wurde bereits 48.630 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel