Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какую OS юзает пользователь? Как определить Windows 7... 
:(
    Опции темы
navodri
Дата 11.1.2010, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 26.10.2007

Репутация: нет
Всего: -1



Как определить, что пользователь юзает Windows 7?   smile  Спасибо!
PM MAIL WWW   Вверх
Демо
Дата 11.1.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50





--------------------
    
PM MAIL ICQ Skype   Вверх
navodri
Дата 11.1.2010, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 26.10.2007

Репутация: нет
Всего: -1



Ну, и где там речь о Windows 7 (или хотя бы о Viste) ? И, кстати, значок  smile  не просто так прилеплен...
PM MAIL WWW   Вверх
Демо
Дата 11.1.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



Цитата(navodri @  11.1.2010,  14:14 Найти цитируемый пост)
Ну, и где там речь о Windows 7 (или хотя бы о Viste) ? И, кстати, значок    не просто так прилеплен...


Я так понимаю, MSDN читать не умеем?

Далее ссылка на OSVERSIONINFO Structure

Схема такая

Код

var
  OV: TOSVERSIONINFO;
begin
  OV.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO);
  GetVersionEx(OV);


далее проверяем всё, что указано по второй ссылке - http://msdn.microsoft.com/en-us/library/ms724834(VS.85).aspx

Это сообщение отредактировал(а) Демо - 11.1.2010, 14:25


--------------------
    
PM MAIL ICQ Skype   Вверх
artsb
Дата 11.1.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Цитата(navodri @  11.1.2010,  14:14 Найти цитируемый пост)
И, кстати, значок  smile  не просто так прилеплен... 

Код

 OSVERSIONINFOEX ov;
 ov.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

 GetVersionEx((OSVERSIONINFO*)&ov);

 if(ov.dwMajorVersion == 6 &&
    ov.dwMinorVersion == 1 &&
    ov.wProductType   == VER_NT_WORKSTATION)
  Caption = "TRUE";

надеюсь здесь переведёт кто-нибудь smile

Замечание: если вы пишете в Delphi7 (или младше) под Win7 (Vista), то вы наверняка запускаете среду в режиме совместимости с WinXP. В этом случае, код, который выше, не изменит Caption формы на "TRUE", т.к. определится WinXP. Но если запустить приложение не из под среды - всё ОК. Будьте внимательны.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
profesiachuvak
Дата 12.1.2010, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 7.11.2009
Где: Беларусь, Минск

Репутация: 1
Всего: 4



Цитата(artsb @  11.1.2010,  15:19 Найти цитируемый пост)
Замечание: если вы пишете в Delphi7 (или младше) под Win7 (Vista), то вы наверняка запускаете среду в режиме совместимости с WinXP. В этом случае, код, который выше, не изменит Caption формы на "TRUE", т.к. определится WinXP. Но если запустить приложение не из под среды - всё ОК. Будьте внимательны. 


Я так понимаю, что сама среда delphi7 работает только в режиме совместимости? А какая версия будет работать под Win7 без этого режима? 

з.ы. И как же определить тогда что мы работаем в Win7 обойдя этот режим совместимости?


--------------------
Закон Мерфи :если есть вероятность того, что какая-нибудь неприятность может случиться, то она обязательно произойдет.
PM MAIL   Вверх
artsb
Дата 12.1.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Цитата(profesiachuvak @  12.1.2010,  15:36 Найти цитируемый пост)
А какая версия будет работать под Win7 без этого режима? 

ИМХО с 2006. Хотя может и позднее. Точно не знаю smile Но в 2010 работает и так.

Цитата(profesiachuvak @  12.1.2010,  15:36 Найти цитируемый пост)
И как же определить тогда что мы работаем в Win7 обойдя этот режим совместимости? 

Получается никак. Только запускать не из под среды если.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Демо
Дата 12.1.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



хм. У меня D6 в обычном режиме работает. А почему он должен в режиме совместимости работать?


--------------------
    
PM MAIL ICQ Skype   Вверх
CodeMonkey
Дата 12.1.2010, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата(Демо @  12.1.2010,  17:08 Найти цитируемый пост)
У меня D6 в обычном режиме работает

А в кнопочке About что пишет?

Добавлено через 1 минуту и 53 секунды
Цитата(Демо @  12.1.2010,  17:08 Найти цитируемый пост)
А почему он должен в режиме совместимости работать?

Типа, неполная совместимость, поэтому может форсированно запускаться в режиме совместимости с XP SP2. Хз, применимо ли к Delphi 6.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
artsb
Дата 12.1.2010, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Цитата(Демо @  12.1.2010,  17:08 Найти цитируемый пост)
А почему он должен в режиме совместимости работать? 

Я не писал, что он должен. Я говорю, что такое возможно.
Кстати, мне кажется, что даже если вы насильно не задавали режим совместимости, система всё равно запускает среду в режиме совместимости.
Проверьте: возьмите код выше, засуньте его в обработчик нажатия кнопки, запустите приложение из под среды и нажмите кнопку. Если в Caption появится TRUE, значит всё ОК.
Лично у меня, при запуске из под BCB 6 Caption не изменяется. А вот при запуске из под 2010 всё ОК.

Добавлено через 1 минуту и 49 секунд
Цитата(CodeMonkey @  12.1.2010,  18:18 Найти цитируемый пост)
А в кнопочке About что пишет?


У меня пишет WinXP smile


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
navodri
Дата 12.1.2010, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 26.10.2007

Репутация: нет
Всего: -1



Я понял. Ребята, а есть что-то проще? Ну, типа Windows Vista или Windows 7? Мне НЕ надо определять версию (вроде 6.1 build...) и т.п. А просто, под какой мы операционкой? Ну, помните, как в старые добрые времена типа: 

Код

function IsWin9x: Bool; {True = Win9x} { False = NT}
asm
 xor eax, eax
 mov ecx, cs
 xor cl, cl
 jecxz @@quit
 inc eax
 @@quit:
end;

PM MAIL WWW   Вверх
artsb
Дата 12.1.2010, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



navodri, читайте MSDN. Я привёл код как определить под Win7 мы или нет.

Добавлено через 11 минут и 49 секунд
Цитата(navodri @  12.1.2010,  18:35 Найти цитируемый пост)
А просто, под какой мы операционкой?

Тут и так всё просто. Всего-то 5 строк smile Куда ещё проще...


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 12.1.2010, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Вот вам на Делфи:
Код

const VER_NT_WORKSTATION = 1;
// ...
procedure TForm1.Button1Click(Sender: TObject);
var
 ov: OSVERSIONINFOEX;
begin
 ov.dwOSVersionInfoSize := sizeof(OSVERSIONINFOEX);
 GetVersionEx(ov);
 if (ov.dwMajorVersion = 6) and
    (ov.dwMinorVersion = 1) and
    (ov.wProductType   = VER_NT_WORKSTATION) then
  Caption := 'TRUE';
end;



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
bems
Дата 12.1.2010, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(artsb @  12.1.2010,  15:48 Найти цитируемый пост)
Получается никак. Только запускать не из под среды если. 

А манифест разве не решает проблему?

Цитата(navodri @  12.1.2010,  18:35 Найти цитируемый пост)
Ну, помните, как в старые добрые времена типа

Это старые гланды через добрую задницу. Правильный способ тебе дали выше.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
CodeMonkey
Дата 12.1.2010, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Ребят, зачем нам API? Мы в Delphi работаем, у нас оболочки есть. Например, такие:

Код
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CheckWin32Version(5, 0) then
    Caption := 'Win2000 or above';

  if CheckWin32Version(5, 1) then
    Caption := 'WinXP or above';

  if CheckWin32Version(5, 2) then
    Caption := 'Win2003 or Win2003 R2 or above';

  if CheckWin32Version(6, 0) then
    Caption := 'WinVista or Win2008 or above';

  if CheckWin32Version(6, 1) then
    Caption := 'Win7 or Win2008 R2 or above';
end;


Добавлено через 1 минуту и 7 секунд
Цитата(bems @  12.1.2010,  19:53 Найти цитируемый пост)
А манифест разве не решает проблему?

Я думаю, что должон решать. Только его ведь может и не быть. А если он есть, то должен быть от Висты/7-ки. XP-вый не подойдёт.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 12.1.2010, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



Цитата(CodeMonkey @  12.1.2010,  20:10 Найти цитируемый пост)
Только его ведь может и не быть.
Ну добавить же не проблема ведь. Нет?



--------------------
Обижено школьников: 8
PM MAIL   Вверх
CodeMonkey
Дата 12.1.2010, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата(bems @  12.1.2010,  20:15 Найти цитируемый пост)
Ну добавить же не проблема ведь. Нет?

Ну, обычно нет. Но мало ли. Вдруг нам как раз нужны эти хаки совместимости, потому что у нас куча кривого кода.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 12.1.2010, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 18
Всего: 88



И заодно мы хотим знать настоящую версию винды, потому что хаки не действуют в достаточной степени для того, чтобы можно было игнорировать её...

Ну нельзя исключать этот случай, хотя очевидно же, что кошмар. Да уж...


--------------------
Обижено школьников: 8
PM MAIL   Вверх
Демо
Дата 12.1.2010, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



Цитата(CodeMonkey @  12.1.2010,  18:18 Найти цитируемый пост)
А в кнопочке About что пишет?


У меня в D6 в About пишет 
Windows 2000 (Build 7600)  (У меня Windows Seven x64)

Но это не значит, что он в режиме совместимости работает.
Просто на время выпуска Delphi понятия Windows 7 ещё не было.


--------------------
    
PM MAIL ICQ Skype   Вверх
artsb
Дата 12.1.2010, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



Цитата(bems @  12.1.2010,  19:53 Найти цитируемый пост)
А манифест разве не решает проблему?

А причём тут манифест? Я говорю, что если запускать прогу из под среды (F9), то результат работы кода неверен. Если же запустить прогу просто из под винды - всё ОК. Или я вас неправильно понял?

Цитата(CodeMonkey @  12.1.2010,  20:10 Найти цитируемый пост)
CheckWin32Version

Эм... Что это за функция такая? Ни ВСВ 6, ни Делфи 2010 её не знают. Но поиск в гугле показал, что такая должна быть в Делфи 6. И первые же строки в гугле "говорят" о том, что она работает неправильно  smile 

Цитата(CodeMonkey @  12.1.2010,  20:10 Найти цитируемый пост)
Ребят, зачем нам API? Мы в Delphi работаем, у нас оболочки есть. Например, такие:

Кстати, даже в них, наверное, не обошлось без WinAPI. Надо бы исходник глянуть, но у меня нет Делфи 6.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Демо
Дата 12.1.2010, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 7
Всего: 50



PS. Уменя показывает     
Код

Caption := 'Win7 or Win2008 R2 or above';


Добавлено @ 21:50
Цитата(artsb @  12.1.2010,  21:48 Найти цитируемый пост)
Кстати, даже в них, наверное, не обошлось без WinAPI


Конечно не обошлось.

Код

{$IFDEF MSWINDOWS}
procedure InitPlatformId;
var
  OSVersionInfo: TOSVersionInfo;
begin
  OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
  if GetVersionEx(OSVersionInfo) then
    with OSVersionInfo do
    begin
      Win32Platform := dwPlatformId;
      Win32MajorVersion := dwMajorVersion;
      Win32MinorVersion := dwMinorVersion;
      Win32BuildNumber := dwBuildNumber;
      Win32CSDVersion := szCSDVersion;
    end;
end;

function CheckWin32Version(AMajor: Integer; AMinor: Integer = 0): Boolean;
begin
  Result := (AMajor > Win32MajorVersion) or
            ((AMajor = Win32MajorVersion) and
             (AMinor >= Win32MinorVersion));
end;



Это сообщение отредактировал(а) Демо - 12.1.2010, 21:51


--------------------
    
PM MAIL ICQ Skype   Вверх
artsb
Дата 12.1.2010, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



CodeMonkey, кстати, эта проверка не даёт точного результата (о котором просил ТС):
Код

CheckWin32Version(6, 1)

В МСДН написано, что для Win7 должно ещё выполняться условие:
Код

OSVERSIONINFOEX.wProductType = VER_NT_WORKSTATION

, а для Windows Server 2008 R2
Код

OSVERSIONINFOEX.wProductType <> VER_NT_WORKSTATION


Это сообщение отредактировал(а) artsb - 12.1.2010, 22:01


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
CodeMonkey
Дата 13.1.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



Цитата(artsb @  12.1.2010,  21:48 Найти цитируемый пост)
А причём тут манифест?

При том, что в режиме совместимости могут быть запущены только "старые" программы. Программа с вистовским манифестом (очевидно) старой не является.

Цитата(artsb @  12.1.2010,  21:48 Найти цитируемый пост)
Ни ВСВ 6, ни Делфи 2010 её не знают.

Угу. Конечно. SysUtils.CheckWin32Version. Начиная с Delphi 6.

Цитата(artsb @  12.1.2010,  21:48 Найти цитируемый пост)
она работает неправильно

Только в Delphi 6.

Цитата(artsb @  12.1.2010,  21:48 Найти цитируемый пост)
даже в них, наверное, не обошлось без WinAPI

Несомненно, они работают вот так.

Цитата(artsb @  12.1.2010,  22:01 Найти цитируемый пост)
эта проверка не даёт точного результата (о котором просил ТС)

Автор вопроса не просил точной проверки:
Цитата(navodri @  12.1.2010,  18:35 Найти цитируемый пост)
Мне НЕ надо определять версию (вроде 6.1 build...) и т.п. А просто, под какой мы операционкой?


Как я понимаю вопрос, автор выбирает ветку выполнения в зависимости от "уровня" операционки. Типа, можно ли использовать определённые флаги или функции. А Win7 в этом плане не отличается от Win2008 R2.

Цитата(artsb @  12.1.2010,  22:01 Найти цитируемый пост)
В МСДН написано, что для Win7 должно ещё выполняться условие

По-моему, я чётко написал: "Win7 or Win2008 R2 or above", ага?

Цитата(Демо @  12.1.2010,  21:39 Найти цитируемый пост)
Но это не значит, что он в режиме совместимости работает.

Согласен, не значит. И судя по About, там похоже на Win7. Build 7600 - это от Win7.
Просто помощник по совместимости программ запускается автоматически, обнаруживая старую программу с проблемой совместимости. А при запуске старых Дельфей, диалог помощника точно всплывает. Так что пока непонятно, надо бы эксперимент провести. Мне 7-ку/6-ку ставить лениво smile


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
artsb
Дата 13.1.2010, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 1
Всего: 64



CodeMonkey, ТС писал:
Цитата(navodri @  11.1.2010,  13:48 Найти цитируемый пост)
Как определить, что пользователь юзает Windows 7?

Поэтому я и написал именно для определения Win7. Вдруг его код не должен работать под Win2008 R2  smile 
И оставим эту тему уже smile  . ТС сам выберет, что ему нужно.

Цитата(CodeMonkey @  13.1.2010,  00:10 Найти цитируемый пост)
При том, что в режиме совместимости могут быть запущены только "старые" программы. Программа с вистовским манифестом (очевидно) старой не является.

Ясно. Спс.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
navodri
Дата 29.1.2010, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 173
Регистрация: 26.10.2007

Репутация: нет
Всего: -1



Ребята! Всем спасибо. Простите, что багодарность с запозданием... Вот код без лишних наворотов, который отлично работает. Проверено!

Код

function CheckWin32Version(AMajor: Integer; AMinor: Integer): Boolean;
begin
  Result := (Win32MajorVersion > AMajor) or
            ((Win32MajorVersion = AMajor) and
             (Win32MinorVersion >= AMinor));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (Win32MajorVersion > 4) or ((Win32MajorVersion = 4) and (Win32MinorVersion > 0)) then caption := 'Windows 98';
  if (Win32MajorVersion > 4) and (Win32Platform = VER_PLATFORM_WIN32_NT) then caption := 'Windows 2K';
  if CheckWin32Version(5, 1) then caption := 'Windows XP';
  if CheckWin32Version(6, 0) then caption := 'Windows Vista';
  if CheckWin32Version(6, 1) then caption := 'Windows 7';
end;

PM MAIL WWW   Вверх
CodeMonkey
Дата 29.1.2010, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 29
Всего: 89



1. Если у вас Delphi 7 или выше, то реализацию CheckWin32Version можете выкинуть - она и так есть.
2. Непонятны первые две строчки в Button1Click. Есть мнение, что вам надо так:
Код
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CheckWin32Version(4, 0) then Caption := 'Windows 95';
  if CheckWin32Version(4, 1) then Caption := 'Windows 98';
  if CheckWin32Version(5, 0) then Caption := 'Windows 2K';
  if CheckWin32Version(5, 1) then Caption := 'Windows XP';
  if CheckWin32Version(6, 0) then Caption := 'Windows Vista';
  if CheckWin32Version(6, 1) then Caption := 'Windows 7';
end;

3. Надеюсь вы уловили, что мы тут говорили про Windows Vista = Windows Server 2008, да? smile

Добавлено через 5 минут и 9 секунд
Как определить настоящую версию Windows в приложении, запущенном в режиме совместимости (как видим - нет прямого пути, только обходные; выглядит логичным).


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0762 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.