Модераторы: 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   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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