powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получить dwProcessId в CreateProcess в Delphi 7
5 сообщений из 5, страница 1 из 1
Получить dwProcessId в CreateProcess в Delphi 7
    #39959859
SilverShield
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня! Коллеги, подскажите пожалуйста.
Использую 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
Получить dwProcessId в CreateProcess в Delphi 7
    #39959861
Kazantsev Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SilverShield,

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

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


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