Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить dwProcessId в CreateProcess в Delphi 7 / 5 сообщений из 5, страница 1 из 1
20.05.2020, 14:31
    #39959859
SilverShield
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить dwProcessId в CreateProcess в Delphi 7
Доброго дня! Коллеги, подскажите пожалуйста.
Использую CreateProcess для запуска и надо получить ProcID процесса, который запущу.
Есть код, который работает на XE3, но сейчас надо на Delphi7 это сделать.

сам код:

Код: 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.
var
  StartUpInfo: TStartUpInfo;
  ProcessInfo: TProcessInformation;
  sa: TSecurityAttributes;
  Arguments, exepath, reason : String;
  startOK: boolean;

  ProcID: Cardinal;
  appPath: string;
begin
  appPath:= ExtractFilePath(application.ExeName);

  Arguments :='\myproc.exe param1;
  exepath:= appPath+ '\myproc.exe';

      with sa do
      begin
        nLength := SizeOf(sa);
        bInheritHandle := true;
        lpSecurityDescriptor := nil;
      end;

      FillChar(startupInfo, SizeOf(startupInfo), 0);
      startupInfo.cb := SizeOf(startupInfo);
      startupInfo.dwFlags := STARTF_USESHOWWINDOW;
      startupInfo.wShowWindow := SW_HIDE; //SW_SHOWNORMAL;
      startupInfo.lpDesktop := nil;

      try
        if CreateProcess(
          nil,
          PChar(exepath),
          @SA, @SA, false, NORMAL_PRIORITY_CLASS,
          nil,
          PChar(appPath),
          StartUpInfo, ProcessInfo) then
        begin
          ProcID:= ProcessInfo.dwProcessId;
          startOK:= true;
        end
        else
          Reason:= SysErrorMessage(GetLastError);



И на D7 уже на стадии компиляции видно, что в код ProcID:= ProcessInfo.dwProcessId; никогда не зайдет.
В код else - зайдет и выполнит. А строка где получение ProcID - нет. Собственно под отладчиком так и получается.
Процесс при этом запускается успешно.

Подскажите, что тут неправильно делаю? Благодарю!
...
Рейтинг: 0 / 0
20.05.2020, 14:36
    #39959861
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить dwProcessId в CreateProcess в Delphi 7
SilverShield,

Попробуй отключить оптимизацию для этого модуля:
Код: pascal
1.
{$OPTIMIZATION OFF}
...
Рейтинг: 0 / 0
20.05.2020, 15:04
    #39959869
SilverShield
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить dwProcessId в CreateProcess в Delphi 7
Kazantsev Alexey, да, помогло! Благодарю!
...
Рейтинг: 0 / 0
20.05.2020, 16:10
    #39959920
misha mike
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить dwProcessId в CreateProcess в Delphi 7
Како-то это странно. ProcID далее где-то используется? Ни разу не видел, чтобы оптимизатор выбрасывал используемый код, он же даже пустые циклы не выбрасывает.
...
Рейтинг: 0 / 0
20.05.2020, 16:36
    #39959936
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить dwProcessId в CreateProcess в Delphi 7
misha mike,

В семёрке оптимизатор с багами. Я нарывался пару раз, тут тоже недавно всплывало .
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить dwProcessId в CreateProcess в Delphi 7 / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]