Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2007, 16:11   #1
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию из Паскаля определить запущен ли Windows

Кто нибудь в курсе, как из Паскаля определить запущен ли Windows.
Трофимов Александр вне форума Ответить с цитированием
Старый 13.06.2007, 17:24   #2
InternetStranger
php / delphi
Форумчанин
 
Аватар для InternetStranger
 
Регистрация: 10.06.2007
Сообщений: 175
По умолчанию

Напрямик, не знаю. Но если никто не скажет, как это делается.... это..... самое.... Можно догадаться по всяким беспонтовым эффектам. Если винда запущена, то DOS-программа выполняется в эмуляции (под XP)- следовательно никто в этой самой эмуляции размер кучи 640 Kb не выделяет. Я так когда-то мучился - максимальный размер кучи под виндой - килобайтов 120, не более.

Толи переменная, толи функция есть в паскале (справочника под рукой нет) MaxAvaible// что-то вроде этого // - определяет размер доступной оперативки
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
InternetStranger вне форума Ответить с цитированием
Старый 14.06.2007, 13:00   #3
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Если совсем банально, то можно попробовать скопировать какой-нибудь системный файл, который в загруженной винде стартует вместе с ней.
Например: C:\Documents and Settings\uzver'_name\NTUSER.DAT
Если файл используется какой-то программой(mast die), то его не скопируешь...
Ну, это как альтернатива правильному варианту.
Alex21 вне форума Ответить с цитированием
Старый 14.06.2007, 13:12   #4
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Цитата:
Сообщение от Alex21 Посмотреть сообщение
Если совсем банально, то можно попробовать скопировать какой-нибудь системный файл, который в загруженной винде стартует вместе с ней.
Например: C:\Documents and Settings\uzver'_name\NTUSER.DAT
Если файл используется какой-то программой(mast die), то его не скопируешь...
Ну, это как альтернатива правильному варианту.
Наверное важна суть проблемы:
данное определение необходимо для создания своего загрузочного диска. Таким образом программа стартуя в Dosе запускает приложение на Паскале, а в Winde на Delphi. С Delphi проблем не возникает, напишу все что надо(последовательности запусков приложений, ожидания их завершений и т.д.) а вот с Паскалем проблема, может Windа какие прерывания или ещё что использует. Просто пользоваться прогами для создания загрузок не интересно, а проверять на дисках наличие папок Windows не совсем эффективно.
Трофимов Александр вне форума Ответить с цитированием
Старый 14.06.2007, 13:20   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Ваабще, да, проверять папки это скучно, ну тогда такой еще способ: запустить виндосовскую прогу например калк:

if not WinExec(PChar('calk.exe'), SW_ShowNormal) then ..

Понятно, что он идет в комплекте, и без него никак.
Alex21 вне форума Ответить с цитированием
Старый 14.06.2007, 13:25   #6
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Тут опять же не пойдёт потому как естественно сначала запускается программа на паскале (поскольку она пойдёт и под дос и под виндовс, которая уже должна определять запущен виндовс или нет. В случае если запущен запускать приложение на делфи и закрываться, а если нет продолжать работать сама.
Трофимов Александр вне форума Ответить с цитированием
Старый 14.06.2007, 13:38   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

директивами компилятора из принципа не пользуетесь ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.06.2007, 14:54   #8
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
директивами компилятора из принципа не пользуетесь ?
Честно говоря не разу не пользовался, не видел в этом нужды.
А что можно с их помощью это организовать?
Трофимов Александр вне форума Ответить с цитированием
Старый 14.06.2007, 15:00   #9
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Раз не пользовали, то это не лучший пример использования.
Тогда по другому:
http://narod.yandex.ru/cgi-bin/yandm...0=398083920&p=
http://narod.yandex.ru/cgi-bin/yands...indows&where=2
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 14.06.2007, 15:25   #10
Трофимов Александр
Форумчанин
 
Аватар для Трофимов Александр
 
Регистрация: 03.11.2006
Сообщений: 321
По умолчанию

Хорошие ссылки, не спорю. Правда как определить какая запущена ОС под делфи я и так знаю. Вопрос был про паскаль.
Ладно буду пользоваться прогами для создания загрузки.
Интересно всё-таки, как пишут загрузчики к дискам, которые самоопределяют систему и соответственно по разному стартуют под дос и виндовс.

Если никому не интересно то тему можно считать закрытой.

Кстати нашёл один выход, правда под Дос не проверял(если кому пригодится). Чем отличается загрузка под Дос? Конечно отсутствием изначально работающей мыши. Поэтому просто определяется адрес обработки прерывания мыши. Если есть программа обработки прерывания, или фиктивная программа обработки прерывания мыши, то соответственно можно грузить прогу на Делфях ну и т.д....
Не очень конечно может и правильно но должно работать.
program ex1;
uses dos;
var
Mi: pointer;
begin
GetIntVec($33,Mi);
If (Mi<>Nil) or (Byte(Mi^)=$CE) then writeln('Запущена ОС');
readln;
end.
Трофимов Александр вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить раздел с Windows Teen4jump Общие вопросы Delphi 3 13.10.2009 00:25
Определить нажатую клавишу средствами Windows k1r1ch Win Api 3 13.09.2009 18:36
Как определить полную версию Windows Crazyman Windows 6 27.01.2008 02:19
Возможно ли определить количество акаунтов Windows bayern JavaScript, Ajax 1 22.09.2007 22:46