Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Перезапустить свою программу

Delphi , Программа и Интерфейс , Приложение своё

Перезапустить свою программу

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.Button1Click(Sender: TObject);
 var
   FullProgPath: PChar;
 begin
   FullProgPath := PChar(Application.ExeName);
   // ShowWindow(Form1.handle,SW_HIDE); 
  WinExec(FullProgPath, SW_SHOW); // Or better use the CreateProcess function 
  Application.Terminate; // or: Close; 
end;

Here is the translation of the provided text into Russian:

Код, представленный ниже, является частью программы Delphi, которая перезапускает себя при клике кнопки Button1. Вот подробное описание того, что он делает:

  1. Определен обработчик события Click для компонента TButton (имени Button1).
  2. Declare и инициализируется переменная FullProgPath типа PChar, содержащая путь к исполняемому файлу программы (Application.ExeName).
  3. Вызывается функция WinExec, передавая FullProgPath как первый аргумент и SW_SHOW (константа, представляющая состояние окна) как второй аргумент. Функция WinExec выполняет указанный процесс.
  4. Наконец, вызывается метод Application.Terminate для прекращения приложения.

Комментарий рекомендует использовать функцию CreateProcess вместо WinExec. Вот почему:

  • WinExec - это старая API, которая была deprecated с Windows NT 3.51. Рекомендуется использовать новые API для запуска процессов.
  • CreateProcess предоставляет больше контроля над созданием процесса, например, установкой переменных окружения и аргументов командной строки.

Вот пример, как можно модифицировать код для использования CreateProcess:

procedure TForm1.Button1Click(Sender: TObject);
var
  FullProgPath: PChar;
begin
  FullProgPath := PChar(Application.ExeName);
  CreateProcess(PChar(FullProgPath), nil, nil, nil, False,
                CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, nil);
  Application.Terminate; // или Close;
end;

В этом примере функция CreateProcess используется для создания нового процесса с тем же исполняемым файлом, что и текущее приложение. Флаг CREATE_NEW_CONSOLE tells Windows создать новый консоль для нового процесса, а NORMAL_PRIORITY_CLASS sets его класс приоритета.

Обратите внимание, что в обоих случаях (используя WinExec или CreateProcess), программа перезапустится сама, запуская новую инстанцию того же исполняемого файла.

В статье описывается способ перезапуска программы на языке Delphi, при котором она закрывает текущее окно и снова запускается с помощью вызова функции WinExec.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Приложение своё ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-10 07:13:18
2024-05-19 17:10:40/0.010526180267334/2