Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Did you try using double-quotes? Regardless, no one in 2011 should be limited by the native VB6 shell command. Here's a function that uses ShellExecuteEx, much more versatile.</p> <pre><code>Option Explicit Private Const SEE_MASK_DEFAULT = &amp;H0 Public Enum EShellShowConstants essSW_HIDE = 0 essSW_SHOWNORMAL = 1 essSW_SHOWMINIMIZED = 2 essSW_MAXIMIZE = 3 essSW_SHOWMAXIMIZED = 3 essSW_SHOWNOACTIVATE = 4 essSW_SHOW = 5 essSW_MINIMIZE = 6 essSW_SHOWMINNOACTIVE = 7 essSW_SHOWNA = 8 essSW_RESTORE = 9 essSW_SHOWDEFAULT = 10 End Enum Private Type SHELLEXECUTEINFO cbSize As Long fMask As Long hwnd As Long lpVerb As String lpFile As String lpParameters As String lpDirectory As String nShow As Long hInstApp As Long lpIDList As Long 'Optional lpClass As String 'Optional hkeyClass As Long 'Optional dwHotKey As Long 'Optional hIcon As Long 'Optional hProcess As Long 'Optional End Type Private Declare Function ShellExecuteEx Lib "shell32.dll" Alias "ShellExecuteExA" (lpSEI As SHELLEXECUTEINFO) As Long Public Function ExecuteProcess(ByVal FilePath As String, ByVal hWndOwner As Long, ShellShowType As EShellShowConstants, Optional EXEParameters As String = "", Optional LaunchElevated As Boolean = False) As Boolean Dim SEI As SHELLEXECUTEINFO On Error GoTo Err 'Fill the SEI structure With SEI .cbSize = Len(SEI) ' Bytes of the structure .fMask = SEE_MASK_DEFAULT ' Check MSDN for more info on Mask .lpFile = FilePath ' Program Path .nShow = ShellShowType ' How the program will be displayed .lpDirectory = PathGetFolder(FilePath) .lpParameters = EXEParameters ' Each parameter must be separated by space. If the lpFile member specifies a document file, lpParameters should be NULL. .hwnd = hWndOwner ' Owner window handle ' Determine launch type (would recommend checking for Vista or greater here also) If LaunchElevated = True Then ' And m_OpSys.IsVistaOrGreater = True .lpVerb = "runas" Else .lpVerb = "Open" End If End With ExecuteProcess = ShellExecuteEx(SEI) ' Execute the program, return success or failure Exit Function Err: ' TODO: Log Error ExecuteProcess = False End Function Private Function PathGetFolder(psPath As String) As String On Error Resume Next Dim lPos As Long lPos = InStrRev(psPath, "\") PathGetFolder = Left$(psPath, lPos - 1) End Function </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload