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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2014, 19:03
AlexeyTG AlexeyTG вне форума
Прохожий
 
Регистрация: 17.12.2014
Сообщения: 7
Версия Delphi: Delphi XE7
Репутация: 10
По умолчанию Рабочий код, просьба оценить "корявость" и сделать замечания по улучшению

Запуск двух программ с ожиданием завершения поднимал тему здесь, написал рабочий код по примерам. Опять же повторюсь, я не программист, работаю в совсем другой сфере ИТ. Просьба глянуть и оценить, что требуется исправить убрать.
Код:
program Project1;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Winapi.Windows,
  shellapi;

var
STI: TStartUpInfo;
App, Param, RunLine:String;
App2, Param2, RunLine2:String;
PI: TProcessInformation;

begin
  try
    { TODO -oUser -cConsole Main : Insert code here }
    begin
    //FillChar(STI, SizeOf(TStartUpInfo), #0);
    //FillChar(STI, SizeOf(TProcessInformation), #0);
    STI.cb := SizeOf(TStartupInfo);
    STI.dwFlags := CREATE_NO_WINDOW;
    STI.wShowWindow := SW_Show;
    App:='C:\Windows\System32\cmd.exe';
    Param:='/?';
    RunLine:=Format('"%s" %s', [App, Param]);
    App2:='C:\Windows\System32\calc.exe';
    if CreateProcess(Pointer(App), Pchar(RunLine), nil, nil, False, CREATE_NEW_CONSOLE OR NORMAL_PRIORITY_CLASS, nil, nil, STI, PI) then
      begin
        WaitForSingleObject(PI.hProcess, INFINITE);
        //ShellExecute(0, 'open','calc.exe', nil, nil, 0);
        CreateProcess(Pointer(App2), Pchar(app2), nil, nil, False, CREATE_NEW_CONSOLE OR NORMAL_PRIORITY_CLASS, nil, nil, STI, PI);
        Exit;
      end
      else exit;

    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
Вопросы:
1. При запуске видно окно программы лаунчера, как сделать, чтобы окошка приложения не было?
2. Для запуска второй программы, что лучше использовать CreateProcess или ShellExecute?
3. Какие параметры использовать, если требуется без оконный запуск приложений App, App2?
4. Pointer(App) ставить или просто в nil убрать?
5. Ну и сам код, насколько криво он написан, что требует редакции
Ответить с цитированием
  #2  
Старый 18.12.2014, 19:10
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

ищи на форуме более удачные примеры, в этом много косяков, даже лень все описывать и активно используй справку.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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