powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение wSuiteMask из GetVersionEx
9 сообщений из 9, страница 1 из 1
Получение wSuiteMask из GetVersionEx
    #39685800
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне надо получить только wSuiteMask.
Его нет в GetVersion, но есть в GetVersionEx.
Однако чтобы его получить, то ли из-за какой-то ошибки, то ли это только в ранних версиях Delphi, надо делать кучу вещей:
Объявлять тип TOSVersionInfoEx
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
type
  TOSVersionInfoEx = packed record
    dwOSVersionInfoSize: DWORD;
    dwMajorVersion: DWORD;
    dwMinorVersion: DWORD;
    dwBuildNumber: DWORD;
    dwPlatformId: DWORD;
    szCSDVersion: array[0..127] of AnsiChar;
    wServicePackMajor: WORD;
    wServicePackMinor: WORD;
    wSuiteMask: WORD;
    wProductType: Byte;
    wReserved: Byte;
  end;

потому что Delphi5 не знает что такое TOSVersionInfoEx.

Переписывать функцию GetVersionEx
Код: pascal
1.
2.
function GetVersionEx(var lpVersionInformationEx: TOSVERSIONINFOEX): BOOL; stdcall; overload;
  external kernel32 name 'GetVersionExA';

потому что Delphi5 и для GetVersionEx (как и для GetVersion), использует TOSVersionInfo, а вместо несуществующего у него TOSVersionInfoEx.

Вот собственно и вопрос: Может существует простой метод как в одну строчку получить wSuiteMask, чтобы не создавать всю инфраструктуру для работы с TOSVersionInfoEx.

P.S. wSuiteMask мне нужен только для определения что у меня Windows Home Server.
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39685850
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyМожет существует простой метод
Это он и есть.
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39685860
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky, вы используете механизм (Delphi 5), которому более 20 лет. Поэтому для реализации этой хотелки нужно дописать недостающие структуры руками. Или пользоваться современным механизмом (современной Delphi).
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39685951
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45Поэтому для реализации этой хотелки нужно дописать недостающие структуры руками

я бы глянул в Jedi Windows API Library и Jedi Code Library

предполагаю, там уже написано

но вот поддерживается ли D5 до сих пор хотя бы в JCL - вопрос.
Впрочем, для объявления типов различия D7 и D5 несущественны
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39686400
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldmi45, Разве по вашему это не ошибка что в Delphi5 обе функции и GetVersion, и GetVersionEx передают данные в переменную класса TOSVersionInfo? Просо не досмотрели...
По логике должно:
GetVersion работает с TOSVersionInfo
GetVersion Ex работает с TOSVersionInfo Ex
Иначе какой смысл от GetVersion Ex в Delphi5?
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39686437
MinGW
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSDN
Код: plaintext
1.
2.
3.
BOOL WINAPI GetVersionEx(
  _Inout_ LPOSVERSIONINFO lpVersionInfo
);

Код: plaintext
1.
pVersionInfo [in, out]
      An OSVERSION INFO  or OSVERSIONINFOEX structure that receives the operating system information.
Она принимает и то и то. Ну и как же по-вашему объявлять?

InterSkyGetVersion работает с TOSVersionInfoУ функции GetVersion() нет параметров вообще, она ни с чем не "работает".


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
type
  TOSVersionInfoEx = packed record
    Info: TOSVersionInfo;
    wServicePackMajor: WORD;
    wServicePackMinor: WORD;
    wSuiteMask: WORD;
    wProductType: Byte;
    wReserved: Byte;
  end;

...

var V: TOSVersionInfoEx;
...
FillChar(V, SizeOf(V), 0);
V.Info.dwOSVersionInfoSize:=SizeOf(V);
if GetVersionEx(V.Info) then
    ...
...
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39686443
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyРазве по вашему это не ошибка что в Delphi5 обе функции и GetVersion, и GetVersionEx передают данные в переменную класса TOSVersionInfo? Просо не досмотрели...
Delphi 5 вышла в 1999 году, тогда не было даже Windows XP, только Windows Server 2000. Скорее всего это была просто заделка "на будущее".
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39686444
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpтолько Windows Server 2000
тьфу, NT 4.0. 2000я в ранней бете была, наверное :)
...
Рейтинг: 0 / 0
Получение wSuiteMask из GetVersionEx
    #39686455
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все дело в волшебных пузырьках размере передаваемой структуры, задаваемом в первых 4-х байтах.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Получение wSuiteMask из GetVersionEx
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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