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