vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2014
 
zurück
Rubrik: Windows/System13.07.01
ShellExecute-Funktion

Startet eine Anwendung oder ein Dokument mit der verknüpften Anwendung, wobei man noch den Start- und Fenstermodus festlegen kann.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  57.175 

Deklaration:

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 nShowCmd As Long) As Long

Beschreibung:
Diese Funktion startet eine Anwendung oder ein Dokument mit der verknüpften Anwendung, wobei man noch den Start- und Fenstermodus festlegen kann.

Parameter:
hwndHandle des aufrufenden Fensters
lpOperationErwartet eine Zeichenfolge, die beschreibt, welche Operation ausgeführt werden soll. Bei diesen Operationen handelt es sich um Befehle, die in der Windows-Registry stehen und auch im Kontextmenü der Datei im Windows-Explorer zu finden sind. Wird ein leerer String übergeben, wird der Standard-Öffnenbefehl benutzt. Ist dieser Standard-Befehl nicht in der Windows-Registry vorhanden, wird die Datei mit dem "Open""-Kommando geöffnet. Unter Windows 2000 wird ebenfalls versucht das Dokument per Standard-Kommando zu öffnen. Ist kein Standard-Kommando definiert, so bedient sich Windows 2000 dem ersten Registryeintrag, welcher bei der verknüpften Datei gefunden wird. Gültige Kommandos sind die folgenden Strings.

lpOperation Kommandos

"edit"Verhält sich so, als würde man im Kontextmenü des Explorers auf "Bearbeiten" klicken.

"explore"Handelt es sich bei "lpFile" um einen Verzeichnispfad, wird der Windows Explorer in Verbindung mit diesem Verzeichnis geöffnet.

"find"Handelt es sich bei "lpFile" um einen Verzeichnispfad, wird der Windows Suchen-Dialog gestartet.

"open"Öffnet die Datei mit dem lt. Registry verknüpften Programm.

"print"Druckt das Dokument in Verbindung mit der verknüpften Anwendung.

"properties"Zeigt die Verzeichnis- oder Datei-Eigenschaften
lpFileVerzeichnisnamen, Datei oder Dokument, welches mit der verknüpften Anwendung geöffnet werden soll.
lpParametersOptionale Angabe von zusätzlichen Aufruf-Parametern.
lpDirectoryLegt das Arbeitsverzeichnis fest.
nCmdShowErwartet ein Konstante, die beschreibt, wie sich das Anwendungs-Fenster berhalten soll.

nCmdShow Konstanten:

' versteckt das Fenster
Const SW_HIDE = 0
 
' maximiert das Fenster
Const SW_MAXIMIZE = 3
 
' minmiert das Fenster
Const SW_MINIMIZE = 6
 
' aktiviert das Fenster
Const SW_NORMAL = 1
 
' zeigt das Fenster
Const SW_SHOW = 5
 
' stellt die Fenstergröße wieder her
Const SW_RESTORE = 9
 
' zeigt das Fenster an und maximiert es
Const SW_SHOWMAXIMIZED = 3
 
' zeigt das Fenster an und minimiert es
Const SW_SHOWMINIMIZED = 2
 
' minimiert das Fenster und aktiviert es nicht
Const SW_SHOWMINNOACTIVE = 7
 
' zeigt das Fenster an, aber aktiviert es nicht
Const SW_SHOWNA = 8
 
' zeigt das Fenster an ohne es zu aktivieren
Const SW_SHOWNOACTIVATE = 4
 
' zeigt das Fenster und aktiviert dies
Const SW_SHOWNORMAL = 1

Rückgabewert:
War der Funktionsaufruf erfolgreich, wird das Instanzhandle der gestarteten Anwendung zurückgegeben. Der Rückgabewert ist 0, wenn nicht genügend Systemressourcen zur Ausführung der Funktion vorhanden sind. Scheitert der Funktionsaufruf aus einem anderen Grund, so ist der Rückgabewert wie folgt zu interpretieren.


Rückgabekonstanten:
' Datei ist keine Win32 Anwendung
Const ERROR_BAD_FORMAT = 11&
 
' Zugriff verweigert
Const SE_ERR_ACCESSDENIED = 5
 
' Datei-Assoziation ist unvollständig
Const SE_ERR_ASSOCINCOMPLETE = 27
 
' DDE ist nicht bereit
Const SE_ERR_DDEBUSY = 30
 
' DDE-Vorgang gescheitert
Const SE_ERR_DDEFAIL = 29
 
' DDE-Zeitlimit wurde erreicht
Const SE_ERR_DDETIMEOUT = 28
 
' benötigte DLL wurde nicht gefunden
Const SE_ERR_DLLNOTFOUND = 32
 
' Datei wurde nicht gefunden
Const SE_ERR_FNF = 2
 
' Datei ist nicht Assoziiert
Const SE_ERR_NOASSOC = 31
 
' Nicht genügend Speicher
Const SE_ERR_OOM = 8
 
' Pfad wurde nicht gefunden
Const SE_ERR_PNF = 3
 
' Sharing-Verletzung
Const SE_ERR_SHARE = 26

Beispiel:

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 nShowCmd As Long) As Long
 
Private Const SW_HIDE = 0
Private Const SW_MAXIMIZE = 3
Private Const SW_MINIMIZE = 6
Private Const SW_NORMAL = 1
Private Const SW_SHOW = 5
Private Const SW_RESTORE = 9
Private Const SW_SHOWMAXIMIZED = 3
Private Const SW_SHOWMINIMIZED = 2
Private Const SW_SHOWMINNOACTIVE = 7
Private Const SW_SHOWNA = 8
Private Const SW_SHOWNOACTIVATE = 4
Private Const SW_SHOWNORMAL = 1
 
Private Const ERROR_BAD_FORMAT = 11&
Private Const SE_ERR_ACCESSDENIED = 5
Private Const SE_ERR_ASSOCINCOMPLETE = 27
Private Const SE_ERR_DDEBUSY = 30
Private Const SE_ERR_DDEFAIL = 29
Private Const SE_ERR_DDETIMEOUT = 28
Private Const SE_ERR_DLLNOTFOUND = 32
Private Const SE_ERR_FNF = 2
Private Const SE_ERR_NOASSOC = 31
Private Const SE_ERR_OOM = 8
Private Const SE_ERR_PNF = 3
Private Const SE_ERR_SHARE = 26
Private Sub Command1_Click()
  Dim Retval As Long
 
  Retval = ShellExecute(Me.hwnd, "open", "C:\Windows\Notepad.exe", _
    "C:\AutoExeC.bat", "c:\", SW_SHOWNORMAL)
 
  ' Der gleiche Vorgang kann auch ausgeführt werden mittels...
  ' Retval = ShellExecute(Me.hwnd, "edit", "C:\AutoExeC.bat", "", "c:\", 'SW_SHOWNORMAL)
 
  Select Case Retval
    Case SE_ERR_NOASSOC
      MsgBox "Datei ist nicht Assizoiert", vbInformation, "Fehler"
      Exit Sub
    Case SE_ERR_PNF
      MsgBox "Pfad wurde nicht gefunden", vbInformation, "Fehler"
      Exit Sub
    Case SE_ERR_FNF
      MsgBox "Datei wurde nicht gefunden", vbInformation, "Fehler"
      Exit Sub
    Case 8, 26, 32, 28, 29, 30, 27, 5, 11 ' alle anderen Fehler
      Exit Sub
  End Select
End Sub

Diese Seite wurde bereits 57.175 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2014 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