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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.02.2024, 20:39
T232006 T232006 вне форума
Прохожий
 
Регистрация: 17.11.2022
Сообщения: 49
Версия Delphi: Delphi XE5
Репутация: 10
Печаль Запуск консольного приложения из Delphi

Здравствуйте!
У меня есть консольное приложение, написанное на C#, закидывающее некий файл на GoogleDrive. Это приложение нужно запустить из приложения Delphi, но при этом дождаться окончания загрузки (то есть, ничего не делать, пока консольное приложение работает). Через ShellExecute всё работает замечательно, но приложение не дожидается окончания работы консоли. Я использую следующую функцию:
Код:
function WinExecAndWait(Filename, params, dir: string):cardinal;
    var
    WorkDir, programName:string;
     StartupInfo:TStartupInfo;
     ProcessInfo:TProcessInformation;
    begin
       GetDir(0,WorkDir);
       programName:=WorkDir+'\'+dir+'\'+FileName;
       FillChar(StartupInfo,Sizeof(StartupInfo),#0);
     StartupInfo.cb:= Sizeof(StartupInfo);
     StartupInfo.dwFlags:= STARTF_USESHOWWINDOW;
     StartupInfo.wShowWindow:= SW_SHOW;
     if not CreateProcess(PChar(ProgramName),
      PChar(params),
      nil,
      nil,
      false,
      CREATE_NEW_CONSOLE or
      NORMAL_PRIORITY_CLASS,
      nil,
      nil,
      StartupInfo,
      ProcessInfo) then result := 0
     else begin
      WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, result);
     end;
  end;
Функция полностью работает, если нужно запустить тестовое приложение (тестовое приложение выводит в консоль строки, которые были в параметре), однако моргнет и сразу выключается, если запускается целевое консольное приложение.
Код консольного приложения такой:
Код:
internal class Program
{
	static async Task Main(string[] args)
	{
		var gu = GoogleUploader.Upload(args[0], args[1], args[2]);
		await gu;
	}
}
В чем может быть дело? Почему shellExecute отрабатывает, а описанная выше отрабатывает только тестовые? Весь день уже убил.
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter