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

Как определить, запущено ли приложение в Windows NT

Delphi , ОС и Железо , Windows

Как определить, запущено ли приложение в Windows NT

Умирает Питер Нортон. На том свете ему за многочисленные заслуги перед компьтерщиками всего мира предлагают выбрать место жительства - Рай или Ад. Походил Нортон по Раю, посмотрел - Ангелы на лирах играют, нектар пьют - скучно. Пошел на Ад посмотреть. Заходит, а там Билл Гейтс за компом сидит - клавиши топчет. Глянул на это дело Питер и пулей к Богу: "Все - говорит - хочу в Аду жить!". Бог начинает выяснять причину такого выбора, Нортон объясняет про скуку в Раю и что в Аду Билл Гейтс за компом развлекается. На что Бог отвечает Нортону: - Он не развлекается - это у него Адское наказание. - Какое ?! - Он пишет MicrosoftOffice, чтоб работал по OS/2 на ЕС-1840.

Следующий кодкомпилируется как на 16-ти, так и на 32-битных платформах.


{$IFNDEF WIN32}
const
  WF_WINNT = $4000;
{$ENDIF}

function IsNT : bool;
{$IFDEF WIN32}
var
  osv : TOSVERSIONINFO;
{$ENDIF}
begin
  result := true;
  {$IFDEF WIN32}
  GetVersionEx(osv);
  if osv.dwPlatformId = VER_PLATFORM_WIN32_NT then
    exit;
  {$ELSE}
  if ((GetWinFlags and WF_WINNT) = WF_WINNT ) then
    exit;
  {$ENDIF}
  result := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsNt then
    ShowMessage('Running on NT')
  else
    ShowMessage('Not Running on NT');
end;

Приветствую!

Вот перевод кода на русский язык:

Делается функция IsNT, которая проверяет, запущено ли приложение на Windows NT или нет. Функция использует два различных подхода в зависимости от платформы:

  1. Если компилируется для 32-разрядных платформ (WIN32), она использует API GetVersionEx для получения информации о версии ОС и проверяет, если платформа ID соответствует VER_PLATFORM_WIN32_NT.
  2. Если компилируется для 16-разрядных платформ, она использует API GetWinFlags для получения флагов Windows и проверяет, если установлен флаг WF_WINNT.

Функция возвращает булевое значение, указывающее, запущено ли приложение на Windows NT или нет.

В обработчике события Button1Click результат функции IsNT используется для отображения сообщения с текстом "Running on NT" или "Not Running on NT".

Следующий код:

{$IFNDEF WIN32} 
  const 
    WF_WINNT = $4000; 
{$ENDIF}

function IsNT: bool;
{$IFDEF WIN32}
  var 
    osv: TOSVERSIONINFO;
{$ENDIF}
begin
  result := true;
  {$IFDEF WIN32}
  GetVersionEx(osv);
  if osv.dwPlatformId = VER_PLATFORM_WIN32_NT then
    exit;
  {$ELSE}
  if (GetWinFlags and WF_WINNT) = WF_WINNT then
    exit;
  {$ENDIF}
  result := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsNt then
    ShowMessage('Running on NT')
  else
    ShowMessage('Not Running on NT');
end;

Я не нашел аналогичной истории о Питере Нортоне, но код выглядит интересным!

В статье рассматривается способ определения запущено ли приложение в Windows NT, а также приведен пример кода на языке Delphi, который позволяет определить платформу и выводить соответствующее сообщение.


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

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




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


:: Главная :: Windows ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 18:27:18/0.0032789707183838/0