Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
Как программе определить, под какой ОС она запущена? 18.04.02 23:21 Число просмотров: 1100
Автор: ggg <ggg> Статус: Elderman
|
> Нужно при запуске программы определить, в ДОСе онаили в > Win32
делаешь файл PE формата (обычный виндовский exe, в MSVC например)
в виндах он начинает выполняться с EntryPoint прописанной в IMAGE_OPTIONAL_HEADER (грубо говоря WinMain)
в досе выполняется DOS stub
он обычно выдаёт "This progrma can not be run in DOS mode"
вместо этого можно вставить любую свою дос-прогу (смотри параметр линкера /stub)
|
|
<programming>
|
Как программе определить, под какой ОС она запущена? 18.04.02 22:45
Автор: juic Статус: Незарегистрированный пользователь
|
Здрасте!
Конкретизирую
Нужно при запуске программы определить, в ДОСе онаили в Win32
После этого должен вызываться или виндовсовский код, или досовский. Прога определяет конфигурацию компа -> работает с железом. Один код не пойдёт. Я подумал, что надо сделать досовскую консоль, определяющую ось и тупо запускающую один из 2х екзешников для разных осей (кто подскажет умнее - благодарен буду)
Приму с благодарностью любые советы или линки, книги(доступные в сети)
Горю!!!!!!!! До понедельника!!!!! HELP
|
 |
Как программе определить, под какой ОС она запущена? 18.04.02 23:21
Автор: ggg <ggg> Статус: Elderman
|
> Нужно при запуске программы определить, в ДОСе онаили в > Win32
делаешь файл PE формата (обычный виндовский exe, в MSVC например)
в виндах он начинает выполняться с EntryPoint прописанной в IMAGE_OPTIONAL_HEADER (грубо говоря WinMain)
в досе выполняется DOS stub
он обычно выдаёт "This progrma can not be run in DOS mode"
вместо этого можно вставить любую свою дос-прогу (смотри параметр линкера /stub)
|
 |  |
[Win32] А дельфийский компилятор эту опцию понимает? 22.04.02 01:55
Автор: juic Статус: Незарегистрированный пользователь
|
> > Нужно при запуске программы определить, в ДОСе онаили > в > > Win32 > > делаешь файл PE формата (обычный виндовский exe, в MSVC > например) > > в виндах он начинает выполняться с EntryPoint прописанной в > IMAGE_OPTIONAL_HEADER (грубо говоря WinMain) > > в досе выполняется DOS stub > он обычно выдаёт "This progrma can not be run in DOS mode" > вместо этого можно вставить любую свою дос-прогу (смотри > параметр линкера /stub)
А то у меня и компиляция проходит, и в ехе строчка /stub:мой файл присутствует. А результата нетути. Может, для дельфи ещё какие опции надо?
|
 |  |
BTW, а яркий представитель программ такого типа - scandisk.exe 19.04.02 13:07
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
|
|
 |  |  |
про scandisk.exe я в курсе 19.04.02 13:39
Автор: juic Статус: Незарегистрированный пользователь
|
|
а процессор в защищённом режиме - это достаточный признак того, что вынь прога под вынью? я так понимаю, если я дос-приложение запущу, не переводящее проц в протектед, и оно определит что проц в протектед - то винда, если нет - то дос...
|
 |  |  |  |
Нет, не верно! 19.04.02 15:07
Автор: Sandy <Alexander Stepanov> Статус: Elderman
|
> а процессор в защищённом режиме - это достаточный признак > того, что вынь прога под вынью? я так понимаю, если я > дос-приложение запущу, не переводящее проц в протектед, и > оно определит что проц в протектед - то винда, если нет - > то дос...
Проц в защищенный режим может перевести и EMM386.EXE
|
 |  |  |  |  |
Ну а всё-таки 19.04.02 16:10
Автор: juic Статус: Незарегистрированный пользователь
|
как ещё (кроме первого совета) можно определить из дос-приложения, что оно запущено в win32
Я попробовал в дельфи эту опцию (stub) найти, но помоему она там не поддерживается. Плиз, хелп!
|
 |  |  |  |  |  |
Ну а всё-таки 19.04.02 17:59
Автор: :-) <:-)> Статус: Elderman
|
INT 2F - Windows Enhanced Mode Installation Check
AX = 1600h
Return: AL = status
00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
01h Windows/386 2.x running
80h XMS version 1 driver installed (neither Windows 3.x enhanced
mode nor Windows/386 2.x running) (obsolete--see note)
FFh Windows/386 2.x running
AL = anything else
AL = Windows major version number >= 3
AH = Windows minor version number
Notes: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
drivers, TSRs, and applications) to cooperate with multitasking
Windows/386 2.x and Windows 3.x and higher enhanced mode.
certain calls are also supported in the Microsoft 80286 DOS extender in
Windows standard mode
this function served as the installation check and AX=1610h served to
get the driver entry point for XMS version 1, which is now obsolete.
Use AX=4300h and AX=4310h instead
|
 |  |  |  |  |  |  |
:))))))))) 19.04.02 18:54
Автор: juic Статус: Незарегистрированный пользователь
|
|
I don't know what language you prefer to thank you, but i really do that! That is the point!!!
|
|
|