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.519 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats ![]() Manfred Bohn IndexOf für mehrdimensionale Arrays Die generische Funktion "IndexOf" ermittelt das erste Auftreten eines bestimmten Wertes in einem n-dimensionalen Array TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||
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. |