Страница 1 из 1

Добавлено: 11 Август 2004, 16:42
Гость
Привет!

В Clarion-6 есть так называемый XP-manifest. Если он включён, то при работе приложения под XP его контролы (кнопки, чекбоксы, скроллбары, радиокнопки, кнопки управления окном и др.) выглядят в стиле XP, а под другой версией Windows - обычным образом.

Как можно узнать, задействован ли он (манифест) в данный момент работы приложения? Или, иными словами, как узнать, работаем ли под XP или под чем иным?

C6-ABC.
Написал: Капитан(67)

Добавлено: 11 Август 2004, 19:24
Гость

Код: Выделить всё

! системный stuff
Type:OSVERSIONINFO     GROUP,Pre(),Type
dwOSVersionInfoSize       ULONG
dwMajorVersion            ULONG
dwMinorVersion            ULONG
dwBuildNumber             ULONG
dwPlatformId              ULONG
szCSDVersion              CSTRING(128)
                        END
  MODULE('WIN32')
    GetVersionEx(signed),signed,pascal,name('GetVersionExA')
  END

....

osvi                    LIKE(Type:OSVERSIONINFO)

...

  osvi.dwOSVersionInfoSize = SIZE(osvi)
  i#=GetVersionEx(ADDRESS(osvi))
  IF (~i# OR osvi.dwPlatformId<>VER_PLATFORM_WIN32_NT)
   ErrorBox('Для работы программы необходима платформа NT (Windows NT/2000/XP)!')
  ELSE
   Main
  END
Осталось узнать у имеющих более свежий MSVC major номер версии XP (у меня 6.0, поэтому сообщить не смогу).

--
Best regards,
Maxim Yemelyanov,
Enigma Soft Company
phone: +380 572 177977
WEB: http://enigmasoft.com.ua
e-mail: clalist@enigmasoft.com.ua
ICQ: 12253836

Написал: ClaList(2)

Добавлено: 13 Август 2004, 12:26
Гость
Спасибо, попробую.
Написал: Капитан(67)

Добавлено: 13 Август 2004, 22:33
Гость
Ага, всё работает. У XP версия 5.1, у 2000 - 5.0
Написал: Капитан(67)

Добавлено: 16 Август 2004, 9:30
Гость
Оказывается, всё ещё проще. В Clarion6 есть такой проп - SYSTEM{PROP:WindowsVersion}

Возвращает (у меня) - 'Windows XP Home Edition Service Pack 1 Build 2600'

RTFM рулит! :-)
Написал: Капитан(67)