![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить в какой ОС работает прога? [D6]
Интересующийся © (2006-03-12 07:53:00)Доброе время суток всем.
Мастера помогите, плиз!
Нужно определить в какой ОС работает прога.
Сейчас использую эту функцию
function GetPlatformId:DWORD;
var
PlatformInfo:OSVERSIONINFO;
begin
PlatformInfo.dwOSVersionInfoSize:= Sizeof(OSVERSIONINFO);
GetVersionEx(PlatformInfo);
result:= PlatformInfo.dwPlatformId;
end;
Но как я понимаю, она понимает только Win32.
P.S.
Нужна функция работающая с Win32/Win64/Linux.
Anatoly Podgoretsky (2006-04-05 19:58:00) [1]Нифига себе
Игорь Шевченко (2006-04-05 17:13:00) [2]
> Как программе собранной в Win32 и запустившейся в Linux
> (в режиме Win) понять что она в Linux?
Нафига ?
Ефеф (2006-04-05 17:10:00) [3];) пиши на Яве ;)
Интересующися (2006-03-12 20:08:00) [4]Понятно.
Значит надо по Linux Api инфу искать.
Большое спасибо за помощь!
Интересующися (2006-03-12 20:04:00) [5]> tesseract © (12.03.06 17:30) [8]
> А на кой тебе это ?
Нужно exe получить который под всеми ОС работает, и сборка у него одна.
При запуске он должен определьть под какой ОС работает и действовать соответсвенно.
P.S.
Даже если это невозможно с Linux, Win64 он должен отлавливать на 100%.
tesseract (2006-03-12 20:03:00) [6]
> Может кто зает, можно DLL под Linux написать?
*nix Dll называется so. (shared object)
> Что в Linux вместо Win API?
Linux Api - не сложно догадаться :-)
Для справки linux - это ЯДРО (kernel) и соответсвенно что там реализовано - то и стандарт. Остальное - сторонние API.
Интересующися (2006-03-12 19:55:00) [7]> Интересующися (12.03.06 19:49) [9]
Дополнение к вопросу:
Что в Linux вместо Win API?
P.S.
Если кто знает примеры и инфу по этому вопросу может поделитесь?
Интересующися (2006-03-12 19:49:00) [8]Может кто зает, можно DLL под Linux написать?
tesseract (2006-03-12 17:30:00) [9]
> Как программе собранной в Win32 и запустившейся в Linux
> (в режиме Win) понять что она в Linux?
Никак. Wine намертво тебя от linux изолирует.
А на кой тебе это ?
> А как тогла пишут крос-платформенные вещи?
Вот {$IFDEF} и используется. Это директива компилятора. Если компилируемся в win32,используем этот код, если в Linux - этот код.
Интересующися (2006-03-12 15:11:00) [10]> tesseract © (12.03.06 14:20) [6]
> Одновременно собрать программу под WIN и под LINUX не представляется возможным.
А как тогла пишут крос-платформенные вещи?
$IFDEF LINUX}
{$ELSE}
{$ENDIF}
P.S.
Вопрос таков.
Как программе собранной в Win32 и запустившейся в Linux (в режиме Win) понять что она в Linux?
tesseract (2006-03-12 14:20:00) [11]
> сли я правидьно понял, весь код будет работать только при
> сборке под Linux?
Мужик !!! одновременно собрать программу под WIN и под LINUX не представляется возможным.
> Если я правидьно понял, весь код будет работать только при
> сборке под Linux?
Да так собрано множество CLX - компонент.
Интересующися (2006-03-12 14:15:00) [12]Добавление к функции.
{$IFDEF LINUX}
Result:= VER_PLATFORM_LINUX;
{$ELSE}
Интересующися (2006-03-12 14:04:00) [13]
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 13:56:00) [14]>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.
tesseract (2006-03-12 10:58:00) [15]
> Насчёт Linux -- это не очень смешная шутка.
{$IFDEF LINUX}
{$ENDIF}
В случая сборки под linux это сработает. Если же запускаешь под WINE - получишь версию указанную в нём :-)
begin...end (2006-03-12 10:00:00) [16]GetVersion определяет все Windows -- от 95 до Vista.
Насчёт Linux -- это не очень смешная шутка.