Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Ошибка STATUS_INVALID_INFO_CLASS при получении идентификатора процесса conhost.exe в 32-битном Delphi

Delphi , Синтаксис , Справочник по API-функциям

Ошибка STATUS_INVALID_INFO_CLASS при получении идентификатора процесса conhost.exe в 32-битном Delphi

Вопрос, поднятый пользователем, касается ошибки STATUS_INVALID_INFO_CLASS, возникающей при попытке получить идентификатор процесса conhost.exe в 32-битном приложении на Delphi. Процесс conhost.exe (Консольный хост) является частью Windows, отвечающим за отображение консольных окон и обработку ввода/вывода для консольных приложений.

Почему возникает ошибка?

Ошибка STATUS_INVALID_INFO_CLASS указывает на то, что указанный класс информации не является допустимым для запрошенного объекта. В данном случае, это означает, что класс информации ProcessConsoleHostProcess (с номером 49) не поддерживается в 32-битных приложениях.

Как решить проблему?

  1. Перекомпиляция программы в 64-битном режиме. Если возможно, перекомпилируйте ваше приложение в 64-битном режиме, так как данный класс информации поддерживается только в 64-битных приложениях.

  2. Использование публичных функций. Microsoft рекомендует использовать публичные функции, упомянутые в описании параметра ProcessInformationClass, чтобы сохранить совместимость вашего приложения.

  3. Использование функций Tool Help. Вы можете использовать функции Tool Help для получения идентификатора процесса conhost.exe. Это альтернативный путь, который не требует использования ProcessConsoleHostProcess.

Пример кода на Object Pascal (Delphi)

Ниже приведен пример кода, который использует функции Tool Help для получения списка процессов и поиска процесса conhost.exe:

program GetConsoleHostProcessID;
{$APPTYPE CONSOLE}
uses
  System.SysUtils,
  System.Diagnostics,
  Winapi.Windows;

var
  ProcessEntry32: TProcessEntry32;
  SnapShot: THandle;
  Result: Cardinal;
  ConsoleHostProcessID: Cardinal;

begin
  SnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if SnapShot = INVALID_HANDLE_VALUE then
    RaiseLastOSError;

  ProcessEntry32.dwSize := SizeOf(TProcessEntry32);
  Result := Process32First(SnapShot, ProcessEntry32);
  while Result do
  begin
    if LowerCaseCopy(ProcessEntry32.szExeFile) = 'conhost.exe' then
    begin
      ConsoleHostProcessID := ProcessEntry32.th32ProcessID;
      Break;
    end;
    Result := Process32Next(SnapShot, ProcessEntry32);
  end;

  CloseHandle(SnapShot);
  if Result = FALSE then
    RaiseLastOSError;

  if ConsoleHostProcessID = 0 then
    Writeln('Процесс conhost.exe не найден.')
  else
    Writeln(Format('Идентификатор процесса conhost.exe: %d', [ConsoleHostProcessID]));
  Readln;
end.

Важные замечания

  • Убедитесь, что вы используете правильный размер данных в соответствии с разрядностью вашего приложения (32 или 64 бит).
  • Проверьте, что у вашего приложения есть необходимые разрешения для доступа к процессу conhost.exe.

Следуя этим рекомендациям, вы сможете избежать ошибки STATUS_INVALID_INFO_CLASS и корректно получить идентификатор процесса conhost.exe.

Создано по материалам из источника по ссылке.

Пользователь столкнулся с ошибкой STATUS_INVALID_INFO_CLASS при попытке получить идентификатор процесса conhost.exe в 32-битном приложении на Delphi, что связано с несовместимостью использования класса информации в 32-битном режиме.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2024-12-26 14:10:33/0.0034050941467285/0