Mit der Process Klasse aus dem Framework kann eine beliebige Anwendung, oder auch eine beliebige Datei mit der verknüpften Anwendung, gestartet werden. Startet man bspw. eine .doc-Datei, so wird automatisch Wordpad oder MS-Word gestartet und die .doc Datei gleich mit aufgerufen. Startet man aber nun eine Datei, zu dem Windows keine verknüpfte Anwendung kennt, kommt es zu einem Fehler. Diesen Umstand macht sich die VB.Net 2005 Klasse clsPrcessEx zu Nutze und öffnet in diesem Fall automatisch den System Dialog "Öffnen mit..." Die Klasse selber erbt die Framework Basisklasse Process und stellt zusätzlich die vierfach überladene Funktion StartEx zur Verfügung. Somit kann die Klasse genauso wie die Process Basisklasse genutzt werden. Der Aufruf einer Datei erfolgt dabei über die Funktion StartEx. Treten beim Aufruf mit der StartEx-Funktion weitere Fehler auf, so werden diese (bspw. File not found, Access denied etc.) als Exception an die aufrufende Klasse (Form) zurückgegeben. Nachfolgend die Klasse clsProcessEx: Option Explicit On Option Strict On ''' <summary> ''' Stellt eine erweiterte Aufrufmethode für verknüpfte Dokumente ''' zur Verfügung. Bei Bedarf wird der System Dialog "Öffnen mit" ''' automatisch angezeigt, wenn keine verknüpfte Anwendung ''' festgelegt wurde. ''' </summary> ''' <remarks> ''' VB.Net 2005 Klassenmodul ''' September 2006 - VB-Power.net ''' http://www.vb-power.net ''' </remarks> Public Class clsProcessEx ' Process Basisklasse erben Inherits Process ''' <summary> ''' Startet die verknüpfte Anwendung. ''' </summary> Public Function StartEx() As Boolean Return DoProcessStart() End Function ''' <summary> ''' Startet die verknüpfte Anwendung. ''' </summary> ''' <param name="StartInfo"> ''' Die ProcessStartInfo, die die Informationen zum Starten eines Prozesses ''' enthält, einschließlich Dateiname und Befehlszeilenargumente. ''' </param> Public Function StartEx(ByVal StartInfo As ProcessStartInfo) As Boolean Me.StartInfo = StartInfo Return DoProcessStart() End Function ''' <summary> ''' Startet die verknüpfte Anwendung. ''' </summary> ''' <param name="FileName"> ''' Legt den zu startenden Dateinamen für den Prozess fest. ''' </param> Public Function StartEx(ByVal FileName As String) As Boolean Me.StartInfo.FileName = FileName Return DoProcessStart() End Function ''' <summary> ''' Startet die verknüpfte Anwendung. ''' </summary> ''' <param name="FileName"> ''' Legt den zu startenden Dateinamen für den Prozess fest. ''' </param> ''' <param name="Arguments"> ''' Legt die zusätzlichen Befehlszeilenargumente für den Prozess fest. ''' </param> Public Function StartEx(ByVal FileName As String, _ ByVal Arguments As String) As Boolean Me.StartInfo.FileName = FileName Me.StartInfo.Arguments = Arguments Return DoProcessStart() End Function ''' <summary> ''' Interne Methode: Startet den Prozess ''' </summary> Private Function DoProcessStart() As Boolean Try ' Basisprozess starten Return Me.Start() Catch win32ex As System.ComponentModel.Win32Exception ' Exception "Verknüpfte Anwendung nicht festgelegt" abfangen ' und System Dialog "Öffnen mit" ausführen. If win32ex.NativeErrorCode = 1155 Then Try With Me.StartInfo .Arguments = "shell32.dll,OpenAs_RunDLL " & .FileName .FileName = "rundll32.exe" .WorkingDirectory = Environment.SystemDirectory End With Return Me.Start() Catch ex As Exception Throw New System.Exception(ex.Message, ex.InnerException) Return False End Try Else Throw New System.Exception(win32ex.Message, win32ex.InnerException) Return False End If End Try End Function End Class Ein einfaches Aufruf-Beispiel: Try Dim ProcessEx As New clsProcessEx ProcessEx.StartEx("C:\Dokumente\MeineDatei.123") Catch ex As Exception MsgBox(ex.Message) End Try Legen Sie als Parameter einen gültigen Dateinamen fest, zu dem es keine verknüpfte Anwendung gibt und sehen Sie selbst. Dieser Tipp wurde bereits 12.197 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevZIP40 Pro DLL Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. |
||||||||||||||||
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. |