Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.16;
Скачать: CL | DM;

Вниз

Как определить в какой ОС работает прога?   Найти похожие ветки 

 
Интересующийся   (2006-03-12 07:53) [0]

Доброе время суток всем.

Мастера помогите, плиз!

Нужно определить в какой ОС работает прога.

Сейчас использую эту функцию


function GetPlatformId:DWORD;
var
PlatformInfo:OSVERSIONINFO;
begin

 PlatformInfo.dwOSVersionInfoSize:= Sizeof(OSVERSIONINFO);
 GetVersionEx(PlatformInfo);
 result:= PlatformInfo.dwPlatformId;

end;


Но как я понимаю, она понимает только Win32.

P.S.
Нужна функция работающая с Win32/Win64/Linux.


 
begin...end ©   (2006-03-12 10:00) [1]

GetVersion определяет все Windows -- от 95 до Vista.
Насчёт Linux -- это не очень смешная шутка.


 
tesseract ©   (2006-03-12 10:58) [2]


> Насчёт Linux -- это не очень смешная шутка.

{$IFDEF LINUX}
{$ENDIF}

В случая сборки под linux это сработает. Если же запускаешь под WINE - получишь версию указанную в нём :-)


 
Интересующийся   (2006-03-12 13:56) [3]

>tesseract ©   (12.03.06 10:58) [2]


{$IFDEF LINUX}
{$ENDIF}


Это конечно понятно, а вот что в нутри?.......

>begin...end ©   (12.03.06 10:00) [1]

Насколько я помнь в результате функция выводит ОС как Win31, Win32 (95,98,Me), WinNT (NT,XP,2003) и другие версии.

Но это все 32-х разрядные штуки, а как определить 64?

P.S.

Есть идея согласно которой нужно отловить все прочие ОС и проверить Linux.
Если не он возможны два варианта:
1. Неизвестная ОС
2. ОС на 64.


 
Интересующися   (2006-03-12 14:04) [4]


function GetPlatformId:DWORD;
var
PlatformInfo:OSVERSIONINFO;
begin

{$IFDEF LINUX}

Result:= DWORD;//Свое представление Linix

{$ELSE}

PlatformInfo.dwOSVersionInfoSize:= Sizeof(OSVERSIONINFO);
GetVersionEx(PlatformInfo);
result:= PlatformInfo.dwPlatformId;

{$ENDIF}

end;


> В случая сборки под linux это сработает. Если же запускаешь под WINE - получишь версию указанную в нём :-)

Если я правидьно понял, весь код будет работать только при сборке под Linux?


 
Интересующися   (2006-03-12 14:15) [5]

Добавление к функции.


{$IFDEF LINUX}

Result:= VER_PLATFORM_LINUX;

{$ELSE}


 
tesseract ©   (2006-03-12 14:20) [6]


> сли я правидьно понял, весь код будет работать только при
> сборке под Linux?

Мужик !!! одновременно собрать программу под WIN и под LINUX не представляется возможным.

> Если я правидьно понял, весь код будет работать только при
> сборке под Linux?

Да так собрано множество CLX - компонент.


 
Интересующися   (2006-03-12 15:11) [7]

> tesseract ©   (12.03.06 14:20) [6]

> Одновременно собрать программу под WIN и под LINUX не представляется возможным.

А как тогла пишут крос-платформенные вещи?


$IFDEF LINUX}

{$ELSE}

{$ENDIF}


P.S.

Вопрос таков.

Как программе собранной в Win32 и запустившейся в Linux (в режиме Win) понять что она в Linux?


 
tesseract ©   (2006-03-12 17:30) [8]


> Как программе собранной в Win32 и запустившейся в Linux
> (в режиме Win) понять что она в Linux?

Никак. Wine намертво тебя от linux изолирует.
А на кой тебе это ?

> А как тогла пишут крос-платформенные вещи?

Вот {$IFDEF} и используется. Это директива компилятора. Если компилируемся в win32,используем этот код, если в Linux - этот код.


 
Интересующися   (2006-03-12 19:49) [9]

Может кто зает, можно DLL под Linux написать?


 
Интересующися   (2006-03-12 19:55) [10]

> Интересующися   (12.03.06 19:49) [9]

Дополнение к вопросу:

Что в Linux вместо Win API?

P.S.

Если кто знает примеры и инфу по этому вопросу может поделитесь?


 
tesseract ©   (2006-03-12 20:03) [11]


> Может кто зает, можно DLL под Linux написать?


*nix Dll называется so. (shared object)


> Что в Linux вместо Win API?


Linux Api - не сложно догадаться :-)

Для справки linux - это ЯДРО (kernel) и соответсвенно что там реализовано - то и стандарт. Остальное - сторонние API.


 
Интересующися   (2006-03-12 20:04) [12]

> tesseract ©   (12.03.06 17:30) [8]

> А на кой тебе это ?

Нужно exe получить который под всеми ОС работает, и сборка у него одна.

При запуске он должен определьть под какой ОС работает и действовать соответсвенно.

P.S.
Даже если это невозможно с Linux, Win64 он должен отлавливать на 100%.


 
Интересующися   (2006-03-12 20:08) [13]

Понятно.

Значит надо по Linux Api инфу искать.

Большое спасибо за помощь!


 
Ефеф   (2006-04-05 17:10) [14]

;) пиши на Яве ;)


 
Игорь Шевченко ©   (2006-04-05 17:13) [15]


> Как программе собранной в Win32 и запустившейся в Linux
> (в режиме Win) понять что она в Linux?


Нафига ?


 
Anatoly Podgoretsky ©   (2006-04-05 19:58) [16]

Нифига себе



Страницы: 1 вся ветка

Текущий архив: 2006.07.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
15-1150463110
if then
2006-06-16 17:05
2006.07.16
Chto takoe iskustvennyj intelekt


4-1144095343
Turbid
2006-04-04 00:15
2006.07.16
Проблемма с глобальными переменными в процедуре хука


15-1150721661
Crazy monkey
2006-06-19 16:54
2006.07.16
Старая вещчица, но смешеая.


15-1150564169
TUser
2006-06-17 21:09
2006.07.16
Это сделали взрослые


3-1147500946
Leshiy
2006-05-13 10:15
2006.07.16
Значение параметра xml документа