Программирование
Веб программирование

VB работа с файлами. Запуск файлов

 
 

Для запуска файлов есть функция Shell. Синтаксис:
Shell "[cmd /X /C] start Путь к файлу", [фокус](не обязательно)

Пример:
Для винда 98(95,Me, Vista, W7):

Shell "start c:1.txt", vbHide

Для виндусов XP:

Shell "cmd /X /C start c:1.txt", vbHide

Программу то мы вызвали, но что делать, если ей надо передать рабочую папку? Что мы делаем в командной строке? Правильно, используем команду ChDir. В VB аналогом выполнения этой команды служит изменение переменной CurDir... Уже прыгаете от радости? Погодите, надо еще и свою воркдирку забэкапить. Итак, пишем код:

Dim CurDirBackup As String 'Объявляем переменную для хранения настоящей рабочей папки
CurDirBackup = CurDir 'Сохраняем свою рабочую папку в переменную, для последующего восстановления
CurDir = "Путь к проге" 'Сюда пишем путь к нашей проге
Shell "Прога.exe" 'Запускаем нашу прогу
CurDir = CurDirBackup 'Восстанавливаем исконное значение переменной CurDir

Вот и все. При желании, переменную CurDirBackup можно очистить, присвоив ей значение Nothing.

Автор дополнения к уроку: -Гепард97-


Есть вопросы? Спроси на нашем форуме!!
Гость [17.12.2010 12:18]

Shell "cmd /X /C start c:\1.txt", vbHide

Krachik [30.05.2011 23:47]

А как запустьть что-либо если не знаеш путь к файлу ?!

антон [28.06.2011 17:03]

у меня vb6
и у меня при этом работает на xp Shell "start c:\1.txt", vbHide

Гость [07.07.2011 23:45]

на vb4 Shell "cmd start /X /C c:\1.txt", vbHide

RafStudio [06.08.2011 10:59]

Очень часто требуется помимо простого запуска приложения, указывать так-же и рабочую папку. В этом случае без API не обойтись. Я тут пол дня ковырял, пока не разобрался. Сначала создаем модуль с таким текстом:
=====================================
Option Explicit

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

Global Const SW
SHOWNORMAL = 1
======================================

Ну а теперь можно запускать приложения типа например так:

ShellExecute(Hwnd, "Open", RunFile, "", PathFile, SW_SHOWNORMAL)

Здесь RunFile - запускаемый файл с указанием полного пути.
PathFile - рабочая папка запускаемого приложения.

Удачи! :)

Аноним [17.09.2011 11:53]

Делаю так:
Dim CurDirBackup As String
CurDirBackup = CurDir
CurDir = "Путь к проге" '<<<<<<<<<<<<<<<
Shell "Прога.exe"
CurDir = CurDirBackup

На отмеченном шаге выдает ошибку: "Необходим Объект!"
Что делать?:(

Аноним [17.09.2011 12:04]

Нешел решение проблемы... <br>
Надо писать ChDir("Путь к проге") для замены значения CurDir!

-Гепард97- [21.09.2011 23:14]

2 Аноним: Пасиба, недосмотрел. В шапку.

Юра (Shade) [10.01.2012 22:08]

Можно через API вот так:

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
NORMAL = (1&)

Private Sub Command1Click()
Call ShellExecute(Me.hwnd, "open", "C:\Test.txt", 0&, 0&, SW
NORMAL&)
End Sub

geranazavr555 [04.04.2012 16:38]

А если в папке с программой, то можно просто имя файла писать???

Razor64 [08.04.2012 19:54]

Всем Здравствуйте, а как сделать чтобы при запуске одной проги, запускалась другая???

Release [08.04.2012 20:30]

В форму добавь код. И когда твоя программа откроется , затем откроется другая программа

Razor64 [08.04.2012 20:39]

Я не в этом смысле. Например: какой код сделать чтобы с запуском блокнота запускалась нужная прога?

alex13sh [08.04.2012 22:09]

айпи нужна для работы с Hwnd это для узнавание какая прога открыта ну короче делаешь таймер с интервалом 1000 делаешь условие если прога с капшен формы = ...Блокнот... - открыта то запускается чрез shell нужная тебе прога

alex13sh [08.04.2012 22:10]

для подробного расказа об айпи и шел пиши в скайп alex76sh1

alex13sh [08.04.2012 22:11]

или ищи в яндексе работа с shell и айпи для работы с окошками или hwnd

Alega [29.07.2012 19:16]

для заметки ...
если в названии файла сделать пробел типа "заявка для магазина.xls" то прога откроет сама себя еще раз... так что используйте в названии файлов 1 слово.



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.