Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.03.2010, 21:12
bemot bemot вне форума
Прохожий
 
Регистрация: 18.02.2010
Сообщения: 14
Репутация: 10
По умолчанию В программу добавить exe файл

Создаю программу, в которой есть кнопки. При нажатии должен открываться другой exe.файл. Помогите как это сделать?
Ответить с цитированием
  #2  
Старый 30.03.2010, 21:24
Михалыч Михалыч вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 142
Репутация: 15
По умолчанию

у меня стандартный калькулятор Windows по кнопке открывается так

procedure TForm1.Button6Click(Sender: TObject);
begin
ShellExecute(Application.Handle,'open',pchar('calc .exe'),pchar(''), pchar(''), SW_SHOWNORMAL);
End;
Ответить с цитированием
  #3  
Старый 30.03.2010, 21:26
bemot bemot вне форума
Прохожий
 
Регистрация: 18.02.2010
Сообщения: 14
Репутация: 10
По умолчанию

спасибо, попробую сделать
Ответить с цитированием
  #4  
Старый 30.03.2010, 21:26
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Exec(GetEnv('COMSPEC'),'/C file.exe');
Exec - сама функция, которая запускает
GetEnv('COMSPEC') - покажет, где находится командный процессор (command.com или cmd.exe)
/C - параметр для command.com, что бы запустить файл
Ответить с цитированием
  #5  
Старый 30.03.2010, 21:36
Михалыч Михалыч вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 142
Репутация: 15
По умолчанию

Если записать как у меня, то все будет работать при условии что exe файл находится в папке windows. В противном случае файл запускаться не будет.
Ответить с цитированием
  #6  
Старый 30.03.2010, 21:56
bemot bemot вне форума
Прохожий
 
Регистрация: 18.02.2010
Сообщения: 14
Репутация: 10
По умолчанию

а как описывать эту процедуру ShellExecute? а то пишет, что неизвестен
Ответить с цитированием
  #7  
Старый 31.03.2010, 00:02
bemot bemot вне форума
Прохожий
 
Регистрация: 18.02.2010
Сообщения: 14
Репутация: 10
По умолчанию

не запускается прога вообще, не пойму. Помогите

Последний раз редактировалось bemot, 20.08.2010 в 13:46.
Ответить с цитированием
  #8  
Старый 31.03.2010, 07:15
Soled Soled вне форума
Прохожий
 
Регистрация: 31.03.2010
Сообщения: 3
Репутация: 10
По умолчанию запустить внешнее приложение и подождать его завершения

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: Пользуемся тегами!

Последний раз редактировалось Admin, 31.03.2010 в 11:05.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter