![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Создаю программу, в которой есть кнопки. При нажатии должен открываться другой 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. |