|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
В программу добавить exe файл
Создаю программу, в которой есть кнопки. При нажатии должен открываться другой exe.файл. Помогите как это сделать?
|
#2
|
|||
|
|||
у меня стандартный калькулятор Windows по кнопке открывается так
procedure TForm1.Button6Click(Sender: TObject); begin ShellExecute(Application.Handle,'open',pchar('calc .exe'),pchar(''), pchar(''), SW_SHOWNORMAL); End; |
#3
|
|||
|
|||
спасибо, попробую сделать
|
#4
|
||||
|
||||
Exec(GetEnv('COMSPEC'),'/C file.exe');
Exec - сама функция, которая запускает GetEnv('COMSPEC') - покажет, где находится командный процессор (command.com или cmd.exe) /C - параметр для command.com, что бы запустить файл |
#5
|
|||
|
|||
Если записать как у меня, то все будет работать при условии что exe файл находится в папке windows. В противном случае файл запускаться не будет.
|
#6
|
|||
|
|||
а как описывать эту процедуру ShellExecute? а то пишет, что неизвестен
|
#7
|
|||
|
|||
не запускается прога вообще, не пойму. Помогите
Последний раз редактировалось bemot, 20.08.2010 в 13:46. |
#8
|
|||
|
|||
запустить внешнее приложение и подождать его завершения
ShellExecute(Handle,'open','Calc',nil,nil,SW_RESTO RE);
ShellExecute() ShellExecuteEx() WinExec() CreateProcess() LoadModule() Зависимости: Требуется модуль ShellApi Примеры: ShellExecute(Handle,nil,'notepad.exe',nil,nil,SW_S HOWNORMAL);SW_HIDE Последний параметр управляет видимостью и активностью запущенной программы на экране. Через ShellExecute() также можно запускать ассоциированную с тем или иным файлом программу: ShellExecute(Handle,'open','pd.doc',nil,nil,SW_SHO WNORMAL); - запустит MS Word (или другую программу, ассоциироанную для запуска *.doc файлов) и загрузит в него файл pd.doc. WinExec('notepad.exe',SW_SHOWNORMAL); WinExec() легче в использовании, однако давно уже устарела и не рекомендуется к использованию, оставлена только в целях совместимости с 16-ти разрядными приложениями. ---------------------------------------------------------------------------- Вариант №2 через WaitForSingleObject Код:
function ExecAndWait(const FileName, Params: ShortString; const WinState: Word): boolean; export; var StartInfo: TStartupInfo; ProcInfo: TProcessInformation; CmdLine: ShortString; begin { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x } CmdLine := '"' + Filename + '" ' + Params; FillChar(StartInfo, SizeOf(StartInfo), #0); with StartInfo do begin cb := SizeOf(StartInfo); dwFlags := STARTF_USESHOWWINDOW; wShowWindow := WinState; end; Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false, CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo); { Ожидаем завершения приложения } if Result then begin WaitForSingleObject(ProcInfo.hProcess, INFINITE); { Free the Handles } CloseHandle(ProcInfo.hProcess); CloseHandle(ProcInfo.hThread); end; end; { А вот пример вызова этой функции: ExecAndWait( 'C:\windows\calc.exe', '', SH_SHOWNORMAL) Параметр FileName = Имя внешней программы. Параметр Params = Параметры, необходимые для запуска внешней программы Параметр WinState = Указывает - как будет показано окно: Для этого параметра мы можем так же использовать следующие константы: SW_HIDE, SW_MAXIMIZE, SW_MINIMIZE, SW_SHOWNORMAL PS: Этот код тестировался в delphi версий 3, 4 и 5. } Последний раз редактировалось Admin, 31.03.2010 в 11:05. |