С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 20.07.2022
Сообщений: 41
1

[Virtual Pascal] Запуск внешнего скрипта на AutoIt с ожиданием его завершения

24.03.2024, 19:54. Показов 499. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть следующий код консольной программы на Borland Delphi 7, который запускает внешний скрипт на AutoIt из папки, где находится скомпилированная программа (не из рабочей папки), с ожиданием его завершения:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
program Project1;
 
{$APPTYPE CONSOLE}
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Forms;
 
function ExecAndWait(const FileName,
  Params: ShortString;
  const WinState: Word): boolean; export;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  CmdLine: ShortString;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
  CmdLine := '"' + Filename + '" ' + Params;
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do
  begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WinState;
  end;
  Result := CreateProcess(nil, PChar( String( CmdLine ) ), nil, nil, false,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
    PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
  { Ожидаем завершения приложения }
  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    { Free the Handles }
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;
 
begin
  ExecAndWait(SysUtils.ExtractFilePath(Forms.Application.ExeName) + '\AutoIt3.exe', '"' + SysUtils.ExtractFilePath(Forms.Application.ExeName) + '\myscript.au3' + '"', SW_SHOWNORMAL);
end.
Нужен эквивалент данного кода на Virtual Pascal (Win32-аналоге Turbo Pascal).
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.03.2024, 19:54
Ответы с готовыми решениями:

Запуск внешнего скрипта и ожидание его завершения
поможите советом, а лучше кодом )) мне нужно запустив скрипт (VBS) отследить его PID в процессах и...

Запуск bat-файла с ожиданием завершения его работы
Доброго времени суток! Есть необходимость из access запускать батник (качает прайсы, распаковывает...

Запуск ЕХЕ с ключами и ожиданием завершения
Нужно запустить ЕХЕ с ключами и ожиданием завершения нашого ехе. Плиз дайте код, и желательно с...

Запуск двух программ с ожиданием завершения
Всем привет! Сам не программист, давно ушел в другую сферу ИТ. Потребовалось написать программку,...

Запуск из одного PHP скрипта другого, не дожидаясь его завершения
Добрый день. Имеется php скрипт registratot.php и calculate.php. Как мне вызывать выполнение...

2
3048 / 1668 / 656
Регистрация: 19.03.2019
Сообщений: 5,372
25.03.2024, 14:01 2
Лучший ответ Сообщение было отмечено Egorka2022 как решение

Решение

Цитата Сообщение от Egorka2022 Посмотреть сообщение
Нужен эквивалент данного кода на Virtual Pascal (Win32-аналоге Turbo Pascal).
вообще ничего не гарантирую.

попробуй такой вариант:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
program Project1;
 
 
uses
  Windows, SysUtils {Variants, Classes, Forms};
 
 
function ExecAndWait(const FileName,
  Params: ShortString;
  const WinState: Word): boolean; export;
var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;
  p: Array[0..127] of Char;
  CmdLineS: string;
  CmdLine: PChar;
begin
  { Помещаем имя файла между кавычками, с соблюдением всех пробелов в именах Win9x }
 
  CmdLineS := '"' + Filename + '" ' + Params;
  CmdLine := p;
  CmdLine := StrPCopy( CmdLine, CmdLineS );
 
  FillChar(StartInfo, SizeOf(StartInfo), #0);
  with StartInfo do
  begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WinState;
  end;
 
 
  Result := CreateProcess(nil, CmdLine, nil, nil, false,
    CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
    PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
  { Ожидаем завершения приложения }
  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    { Free the Handles }
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;
 
var ExePath : string;
begin
  ExePath := ExtractFilePath(ParamStr(0));
  ExecAndWait(ExePath + '\AutoIt3.exe', '"' + ExePath + '\myscript.au3' + '"', SW_SHOWNORMAL);
end.
1
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7795 / 4618 / 2830
Регистрация: 22.11.2013
Сообщений: 13,114
Записей в блоге: 1
25.03.2024, 19:38 3
mr-Crocodile,
Pascal
1
2
3
  CmdLineS := '"' + Filename + '" ' + Params + #0;
  {...}
  Result := CreateProcess(nil, @CmdLineS[1], {...}
1
25.03.2024, 19:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.03.2024, 19:38
Помогаю со студенческими работами здесь

Запуск внешней связанной программы с ожиданием завершения
Добрый день! Подскажите, каким образом можно из Access запустить внешнюю связанную программу,...

Запуск приложений с ключами и ожиданием завершения на Т39 установки Виндовс
Драсте. Я в С++ новичок и у меня вопрос: как запустить какойто внешний ехе файл с параметрами...

Ожидание завершения внешнего скрипта
Друзья, всем добра и С новым годоМ! Я все чаще замечаю, что меня как будто кто-то подменил... ...

Запуск скрипта после завершения торрента transmission на Ubuntu Server 16.04
Здравствуйте! Суть вопроса: На домашнем Nas под управлением Ubuntu Server 16.04 установлен и...

Вызов с ожиданием завершения
Проблема не раз обсуждалась и имеет решения на разных форумах Однако столкнулся с проблемой Суть...

Восстановление работы скрипта после его внепланового завершения
Доброго времени суток. Есть цикл while , с ним работают несколько потоков через модуль threading....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru