MyTetra Share
Делитесь знаниями!
Внешние приложения - Запуск
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - msa.polarcom.ru - 15 Приложения Внешние
Запись: xintrea/mytetra_db_adgaver_new/master/base/1532018562awk146l07k/text.html на raw.githubusercontent.com

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

По материалам: 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



Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования