procedure TForm1.Button1Click(Sender: TObject);
var
w1: Word;
p1, p2: array[0..100] of Char;
begin
StrPcopy(p1, 'CALC');
if GetModuleHandle(p1) = 0 thenbegin
StrPcopy(p2, 'C:\windows\Calc.exe');
w1 := WinExec(p2, SW_Restore);
end;
end;
Here is the translation of the code into Russian:
Код Delphi, запускающий внешнюю программу (в этом случае, Windows Калькулятор) при клике кнопки на форме.
Разбивка кода:
Процедура Button1Click вызывается при клике кнопки с именем "Button1".
Процедура объявляет два локальных переменных: w1 (тип Word, 16-разрядное целое число) и два массива символов p1 и p2 (строки).
Код копирует строку 'CALC' в p1.
Затем код пытается получить handle модуля для программы, указанной в p1. Если это не удается (т.е., если программа не найдена), он устанавливает строку p2 в путь к исполняемому файлу Windows Калькулятора (C:\windows\Calc.exe).
Наконец, код использует функцию WinExec для запуска программы, указанной в p2, с флагом SW_ Restore (что означает, что окно должно быть восстановлено до его оригинального размера и положения).
Некоторые предложения по улучшению:
Вместо жесткой привязки пути к исполняемому файлу Windows Калькулятора можно хранить его как константу или читать из конфигурационного файла.
Могло бы быть полезно добавить обработку ошибок для ситуаций, когда программа не найдена или не может быть запущена (например, если пользователь не имеет разрешения на запуск программы).
Если вы используете Delphi 2009 или позднее, можно использовать функцию ShellExecute вместо WinExec, которая предоставляет более контролируемый способ запуска программы.
Вот обновленная версия кода, которая включает в себя эти предложения:
procedure TForm1.Button1Click(Sender: TObject);
const
CALC_EXE = 'C:\windows\Calc.exe';
var
w1: Word;
begin
if GetModuleHandle('CALC') = 0 then
begin
ShellExecute(nil, 'open', CALC_EXE, nil, nil, SW_RESTORE);
end;
end;
Обратите внимание, что в русском языке не используется дефис (-) для разделения слов. Вместо этого используются пробелы или знаки препинания (например, точки или запятые).
В статье описывается процедура запуска внешней программы CALC из приложения на языке Delphi, используя функции GetModuleHandle и WinExec.
Комментарии и вопросы
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.