IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Запуск Bat-файла, и внешних исполняемых фалов
Cygno
сообщение 26.10.2004 10:34
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 10
Пол: Мужской

Репутация: -  0  +


Такой вопросец...

Как средствами Delphi 7 организовать запуск bat-файла (да и вообще любого внешнего файла? Чт оза функция управляет этиим? И нужно ли чего подключать, в Uses
(есть только имя файла с путем к нему, какие еще параметры нужны?)

Когда пишу ShellExecuteEx - мне не выдает параметров, как будто такой функции нет..

Может я опять чего не увидел в хелпе? smile.gif :p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 26.10.2004 11:18
Сообщение #2


Гость






Легче всего использовать WinExec. При обращении к WinExec необходимо задать полный путь к программе или имя EXE файла, расположенного в пути поиска, а также способ отображения программы (константы SW_HIDE, SW_SHOW,
SW_SHOWMAXIMIZED, SW_SHOWMINIMIZED, SW_SHOWMINNOACTIVE? SW_SHOWNA, SW_SHOWNORMAL).

Если вызов функции произошел успешно, то WinExec вернет дескриптор новой
программы (который не может быть меньше 32, т.е. если WinExec возвращает число меньше 32, то вызов привел к ошибке...

Еще один простой вызов это - ShellExecute. Этот вызов во многом напоминает WinExec, однако он поддерживает обработку типов файлов, зарегистрированных в Windows. Например, если вы с помощью ShellExecute вы попробуете запустить файл с расширением .BMP, то буде запущена программа Paint или любая другая, которая использует для просмотра графических файлов. В качестве аргументов ShellExecute принимает дескриптор окна (если есть необходимость в сообщениях об ошибках), строку, такую как open (открыть), print (напечатать) и explore (исследовать), можно в качестве этой строки передать NULL, тогда файл указанный вами будет открыт (open). Так же ShellExecute необходимо сообщить имя файла и любые параметры командной строки (чаще всего NULL), и оставшиеся два аргумента это текущий каталог и константа функции ShowWindow (как и в WinExec).

Значение, которое возвращает ShellExecute такое же, как и у WinExec. Функцию ShellExecute можно использовать, например, для открытия корневого каталога диска С:
Код

ShellExecute(hWnd, 'open', 'c:\', nil, nil, SW_SHOWNORMAL);


Вы можете заменить строку "open" на "explore" и в качестве третьего параметра указать любой каталог, в этом случае указанная вами папка откроется в Проводнике (Explorer).

Так же существует системный вызов ShellExecuteEx, который фактически является полным аналогом ShellExecute, однако в качестве аргумента он принимает указатель на структуру, поля которой во многом совпадают с аргументами ShellExecute. Кроме этого после завершения своей работы ShellExecuteEx помещает в одно из полей этой структуры дескриптор запущенной программы.
Применение этих вызовов довольно просто. Пример программы использующей WinExec и ShellExecute:

Код

uses ShellAPI;

var
 h: hwnd;
begin
// Используем ShellExecute
 if ShellExecute(h, 'open', 'readme.txt', nil, nil, SW_SHOW) < 32 then
   begin
     ShowMessage('Немогу выполнить ShellExecute !')
   end;
// Используем WinExec
 if WinExec('Notepad c:\config.sys', SW_SHOW) < 32 then
   begin
     ShowMessage('Немогу выполнить WinExec !')
   end;
end;


(Взято из Delphi Russian Knowledge Base 2.0)
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Cygno   Запуск Bat-файла   26.10.2004 10:34
volvo   Легче всего использовать WinExec. При обращении к ...   26.10.2004 11:18
Cygno   volvo Благодарю, сейчас попробуем. [b]Добавлено ...   26.10.2004 12:25
Atos   Cygno , а не пробовал сразу объявлять не string, a...   26.10.2004 12:44
Cygno   Пробовал. Но мне надо выполнить конкатенацию - соб...   26.10.2004 13:10
volvo   Cygno Попробуй так: procedure TfrmPPG.btnRunCl...   26.10.2004 13:20
Cygno   Спасибо, volvo ! Сработало. Только вот поче...   26.10.2004 13:29
Atos   Ага, я опоздал, volvo уже и текст привёл... :) Кс...   26.10.2004 13:30
Cygno   В продолжение... При выполнение команды WinExec...   26.10.2004 14:01
xds   procedure TMainForm.btLaunchClick(Sender...   26.10.2004 15:57
Cygno   Очередная проблема с этими запусками....... Есть ...   27.10.2004 13:40
volvo   Cygno Ну если у тебя: так почему не сделать т...   27.10.2004 14:05
Atos   Гм... если путь относительный, то почему бы не пр...   27.10.2004 14:28
volvo   Cygno Есть еще один момент - у тебя случайно в п...   27.10.2004 14:32
Cygno   Кириллицы точно нет. Так не хочу, потому что вс...   27.10.2004 15:19
volvo   Cygno А ведь Atos прав - лучше всего запускать ба...   27.10.2004 15:45
Cygno   Ну что ж господа - свершилось чудо! :) Это ...   27.10.2004 16:01
P@sh@   Cygno Только вот почему, когда я пишу функцию в о...   2.11.2004 7:50
Cygno   Я думал, что это функция, отвечающая за преобразов...   2.11.2004 8:15


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 11.07.2025 6:06
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"