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

> ВНИМАНИЕ!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

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


Новичок
*

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

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


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

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

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

Может я опять чего не увидел в хелпе? smile.gif :p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 14:34
volvo   Легче всего использовать WinExec. При обращении к …   26.10.2004 15:18
Cygno   volvo Благодарю, сейчас попробуем. [b]Добавлено …   26.10.2004 16:25
Atos   Cygno , а не пробовал сразу объявлять не string, a…   26.10.2004 16:44
Cygno   Пробовал. Но мне надо выполнить конкатенацию - соб…   26.10.2004 17:10
volvo   Cygno Попробуй так: procedure TfrmPPG.btnRunCl…   26.10.2004 17:20
Cygno   Спасибо, volvo ! Сработало. Только вот поче…   26.10.2004 17:29
Atos   Ага, я опоздал, volvo уже и текст привёл... :) Кс…   26.10.2004 17:30
Cygno   В продолжение... При выполнение команды WinExec…   26.10.2004 18:01
xds   procedure TMainForm.btLaunchClick(Sender…   26.10.2004 19:57
Cygno   Очередная проблема с этими запусками....... Есть …   27.10.2004 17:40
volvo   Cygno Ну если у тебя: так почему не сделать т…   27.10.2004 18:05
Atos   Гм... если путь относительный, то почему бы не пр…   27.10.2004 18:28
volvo   Cygno Есть еще один момент - у тебя случайно в п…   27.10.2004 18:32
Cygno   Кириллицы точно нет. Так не хочу, потому что вс…   27.10.2004 19:19
volvo   Cygno А ведь Atos прав - лучше всего запускать ба…   27.10.2004 19:45
Cygno   Ну что ж господа - свершилось чудо! :) Это …   27.10.2004 20:01
hydroxychloroquine over the coun   Amoxicillin Dosage For Domestic House Cat   26.09.2021 4:54
promethazine without prescriptio   5mg Cialis From India   19.12.2021 22:35
P@sh@   Cygno Только вот почему, когда я пишу функцию в о…   2.11.2004 11:50
Cygno   Я думал, что это функция, отвечающая за преобразов…   2.11.2004 12:15
nishaknapp   Why not settling on games that is fun and at the s…   16.01.2023 6:21


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

 





- Текстовая версия 26.06.2024 12:41
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name