Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / System / Shell / Exec

Programm zu Dokument starten

Historie
14.06.2001Optionale Angabe der durchzuführenden Operation
03.05.2001Vereinfachte OpenMail-Funktion
30.10.2000Beispiele hinzugefügt
14.07.2000Erste Version

Einführung

Die unten vorgestellte Funktion ShellExec ermöglicht es, eine gegebene Datei (z.B. "c:\test\xyz.doc") automatisch in das dazugehörige Programm (im Beispiel: MS Word) zu laden. Optional kann auch eine andere Operation angegeben werden, um z.B. das angegebene Dokument zu drucken (Operation = "print"). Die Routine gibt übrigens genau dann True zurück, wenn der Versuch erfolgreich ist.

Die darauf aufbauende Funktion OpenMail dient für den komfortablen Versand einer eMail. Als Parameter können neben der Zieladresse auch der Betreff (empfehlenswert), die Kopie-Empfänger, sowie der Mail-Text angegeben werden.

Beispiele

Dieses Statement lädt das angegebene Dokument in das dazugehörige Programm (also wahrscheinlich MS Word):

ShellExec "C:\test\xyz.doc"

Dagegen wird hier das Dokument einfach ausgedruckt:

ShellExec "C:\test\xyz.doc", , "print"

Hier wird der Default-WebBrowser im Vollbild-Modus gestartet, wobei die angegebene URL angezeigt wird (übrigens eine sehr gute Adresse... Smile!):

ShellExec "http://www.schwider.de/", vbMaximizedFocus

Diese Zeile startet das Default-Mail-Programm:

ShellExec "mailto:test@vb-tec.de?Subject=Blabla"

Weitere interessante Infos dazu gibt es übrigens hier: MailTo-Links.

Mail für Versand öffnen

Die folgende Funktion benutzt die o.g. MailTo-Möglichkeit, um komfortabel den Versand einer eMail vorzubereiten. Damit Sonderzeichen keine Schwierigkeiten beim Versand machen, werden diese mit der in Codieren von Strings fürs Web vorgestellten Methode "entschärft".

Function OpenMail(MailTo As String, _
    Optional Subject As String, _
    Optional CC As String, _
    Optional BCC As String, _
    Optional Body As String _
  ) As Boolean
  Dim Param As String
  
  'Ggf. optionale Parameter anhängen:
  If Len(Subject) Then _
      Param = "?Subject=" & URLPathEncode(Subject)
  If Len(CC) Then _
      Param = Param & "&CC=" & CC
  If Len(BCC) Then _
      Param = Param & "&BCC=" & BCC
  If Len(Body) Then _
      Param = Param & "&Body=" & URLPathEncode(Body)
  
  'MailTo-Link "ausführen":
  If Len(Param) Then Mid$(Param, 1) = "?"
  OpenMail = ShellExec("mailto:" & MailTo & Param)
End Function

Das o.g. letzte Beispiel kann mit dieser Funktion dann auch einfacher so geschrieben werden:

OpenMail "test@vb-tec.de", "Blabla"

Code / Quelltext

Die folgende Zeile muss im Deklarationsteil eines Moduls stehen:

Private Declare Function ShellExecuteA Lib "shell32.dll" ( _
    ByVal hwnd As Long, ByVal lpOperation As String, _
    ByVal lpFile As String, ByVal lpParameters As String, _
    ByVal lpDirectory As String, ByVal nShowCmd As Long _
  ) As Long

Die eigentliche Funktion ist eine einfache Kapsel um den API-Aufruf:

Function ShellExec( _
    ByVal Path As String, _
    Optional ByVal WindowStyle As VbAppWinStyle = vbNormalFocus, _
    Optional ByVal Operation As String = "open" _
  ) As Boolean
  
  ShellExec = ( _
      ShellExecuteA(0&, Operation, Path, _
      vbNullString, vbNullString, WindowStyle) > 32)
End Function

© Jost Schwider, 14.07.2000-14.06.2001 - http://vb-tec.de/shellexe.htm