TopPicLogo TopPicText

Внешние приложения - Запуск

По материалам: https://msdn.microsoft.com/ru-ru/library/xe736fyk(v=vs.90).aspx
Добротное описание: http://excelvba.ru/code/environ

Для программ из "Windows\system32" путь не обязателен. Этот путь доступен всегда. Он из системной переменной Path

       Shell "calc.exe"

Функция Shell
Запускает исполняемую программу и возвращает целочисленное значение, содержащее идентификатор процесса программы, если она все еще выполняется.

Public Function Shell( _
   ByVal PathName As String, _ 
   Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _ 
   Optional ByVal Wait As Boolean = False, _ 
   Optional ByVal Timeout As Integer = -1 _
) As Integer


Параметры:
PathName
    Обязательный параметр. String. Имя программы для выполнения, вместе со всеми обязательными аргументами и параметрами командной строки. PathName может также содержать диск и путь к каталогу или папке.
    Если вы не знаете путь к программе, можно использовать Метод My.Computer.FileSystem.GetFiles для его поиска. Например, можно вызвать My.Computer.FileSystem.GetFiles("C:\", True, "testFile.txt"), которая возвращает полный путь каждого файла с именем testFile.txt в любом месте на диске C:\.
Style
    Необязательный атрибут. AppWinStyle. Значение, выбранное из перечисления Перечисление AppWinStyle и задающее стиль окна, в котором запускается программа. Если опущен Style, Shell использует AppWinStyle.MinimizedFocus, которая запускает программу в свернутом состоянии и в фокусе.
Wait
    Необязательный атрибут. Boolean. Значение, показывающее, должна ли функция Shell ожидать завершения программы. Если этот аргумент Wait опущен, используется ShellFalse.
Timeout
    Необязательный атрибут. Integer. Число миллисекунд ожидания завершения, если значение Wait равно True. Если параметр Timeout опущен, Shell использует -1, то есть тайм-аут не используется и Shell ожидает завершения выполнения программы. Таким образом, если вы опустите Timeout или установите его в -1, существует возможность, что Shell никогда не передаст управления вашей программе.

Shell "C:\Program files\WinRar\WinRar.exe", vbNormalFocus ' Запускаем WinRar.exe, окно программы получит фокус и сохранит стандартные размеры 


Запуск программы с параметрами:

Dim s$
   s = Environ("APPDATA") & "\GHISLER\AkelPad\AkelPad.exe ""d:\temp\Code.txt"""
    'Debug.Print s
    Shell s, vbNormalFocus




API-функция ShellExecute
Для запуска как exe-файла, так и файла, ассоциированного с приложением, например, chm-файла, лучше использовать API-функцию ShellExecute.

Пример использования:

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
Sub OpenApp()
    URL = "D:\Temp\VB Help.chm"
    ShellExecute 0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus
End Sub

Ну или так:


Sub test()
    ПутьКФайлу = "C:\Documents and Settings\Игорь\Рабочий стол\4511_185_158.jpg"
    
    If Dir(ПутьКФайлу) = "" Then MsgBox "Файл  " & ИмяФайла & "  не найден", vbExclamation, "Файл не найден": Exit Sub
    ПутьКФайлу = Chr(34) & ПутьКФайлу & Chr(34)    ' добавляем кавычки до и после пути к файлу (если имя содержит пробелы)
    
    CreateObject("WScript.Shell").Run ПутьКФайлу    ' аналогично двойному щелчку мыши на файле
End Sub
Назад ToTop
L.E. 20.05.2017
Рейтинг@Mail.ru