Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];

Вниз

Развернуть досовское окноий экран программы на весь экран   Найти похожие ветки 

 
Развёртка   (2008-10-03 13:33) [0]

Подскажите, как сделать так, чтобы при запуске программы написанной на Turbo Pascal окно DOS`а само разворачивалось на весь экран, а не было в окошке.
Что-то вроде программной реализации Alt+Enter которые приходится нажимать, чтобы развернуть на весь экран.


 
{RASkov} ©   (2008-10-03 13:44) [1]

А *.pif не поможет?


 
Любитель музыки   (2008-10-03 13:45) [2]

Что за *.pif и как им пользоваться?


 
clickmaker ©   (2008-10-03 13:50) [3]

везет вам, молодым: не знаете, что такое пиф
это тоже, что lnk, но для дос-программ


 
Развёртка   (2008-10-03 14:10) [4]

разобрался, большое спасибо!


 
Развёртка   (2008-10-03 14:12) [5]

Только вот теперь такой вопрос, а как бы эти два файла теперь объединить в 1? Чтобы не было два файла одинакового имени, но с разными расширениями pif и exe, а чтобы только один exe был?


 
Сергей М. ©   (2008-10-03 14:21) [6]

Зачем их объединять-то ?

Не нужен pif - удали его к едренейфене, но тогда Alt+Enter будишь давить ручками)


 
Развёртка   (2008-10-03 14:38) [7]

А как можно сделать, чтобы программа сама выполняла нажатие комбинаций клавиш Alt+Enter? (Не механически, программно разумеется)


 
Сергей М. ©   (2008-10-03 14:48) [8]

Встречный вопрос - чем тебе помешал pif ? И какая тебе разница что запускать (pif или exe), если запуск предварительно настроенного pif реализует поставленную задачу ?


 
Развёртка   (2008-10-03 14:51) [9]

Хочется чтобы был только 1 exe файл и пользователь мог запускать именно exe, а не pif


 
Сергей М. ©   (2008-10-03 15:05) [10]


> и пользователь мог запускать именно exe, а не pif


А ему не похрену что запускать ?

Вот он жмет Меню "Пуск -> Выполнить..", вводит туда , к примеру, с:\SomeDir\SomeDOSProgram и - вуаля ! - получает старт соответствующего ДОС-приложения в полноэкранном режиме, при этом даже не зная, что на самом деле при старте приложения системой был использован именно pif..

А если юзер кроме окна экплорера больше знать ничего не знает в плане запуска приложений. то и это решаемо - exe просто делается скрытым и эксплорер настраивается на непоказ скрытых файлов

В конце-концом, если юзер ленив и туп, а тебе больше делать нечего кроме как угождать его дурацким прихотям, то лепишь простейшее приложение, стартующее pif, и подставляешь свой exe юзеру


 
Развёртка   (2008-10-03 15:12) [11]

Но всё-таки, как это можно реализовать, чтобы был только один exe? (без pif)


 
Сергей М. ©   (2008-10-03 15:31) [12]

см. keybd_event()


 
Правильный$Вася   (2008-10-03 15:31) [13]


> как это можно реализовать, чтобы был только один exe?

никак
потому как дос-программа не знает, где она запускается
нет у нее понятия окна


 
Развёртка   (2008-10-03 15:42) [14]

А в каком модуле находится эта функция keybd_event(), мне выдаёт неизвестный идентификатор. Пишу в Turbo Pascal 7.0


 
Сергей М. ©   (2008-10-03 15:54) [15]


> Пишу в Turbo Pascal 7.0


А причем здесь Turbo Pascal ?

Речь вроде бы идет о Win32-приложении, в задачу которого входит запуск некоего DOS-приложения в полноэкранном режиме ?


 
Развёртка   (2008-10-03 16:00) [16]

Так это приложение я пишу на TurboPascal

> Подскажите, как сделать так, чтобы при запуске программы
> написанной на Turbo Pascal окно DOS`а само разворачивалось
> на весь экран, а не было в окошке.

Или можно как-то ещё использовать эту функцию?


 
Развёртка   (2008-10-03 16:02) [17]

Мне нужно написать само DOS-приложение, которое будет разворачиваться автоматически на весь экран при его запуске файла exe, но в ОС Windows XP.


 
Сергей М. ©   (2008-10-03 16:05) [18]


> это приложение я пишу на TurboPascal


Ну и пиши себе, никто ж не мешает)

Но DOS-приложение знать ничего не знает и знать не может ни о каких Windows-окнах и режимах. Где и как отрисовывать виз.результаты работы DOS-приложения - этим заведует Windows.


 
Сергей М. ©   (2008-10-03 16:07) [19]


> Мне нужно написать само DOS-приложение, которое будет разворачиваться
> автоматически на весь экран


Оно и так уже развернуто "во весь экран".
А вот что считать "полным экраном" - это уже решает Windows.


 
Развёртка   (2008-10-03 16:09) [20]

А ему и не нужно знать, от приложения требуется вызвать функцию API keybd_event() и нажать в сочетании две клавиши Alt и Enter. Но в каком модуле находится эта функция и как её подключить к программе, как обычно через uses? И как можно сделать задержку нажатия, то есть я вызову функцию нажатия на кнопку Alt, затем Enter, но надо одновременное нажатие, то есть вызвать Alt держать как-то и вызвать Enter, затем опустить обе, как это можно сделать?


 
Сергей М. ©   (2008-10-03 16:11) [21]


> от приложения требуется вызвать функцию API keybd_event()


Чьего API ?!

У DOS свой API, у Windows свой)


 
Развёртка   (2008-10-03 16:15) [22]

А какая тогда функция API Dos`а отвечает за нажатие клавиш? Если такая же keybd_event(), то в каком модуле она находится?


 
Сергей М. ©   (2008-10-03 16:20) [23]


> какая тогда функция API Dos`а отвечает за нажатие клавиш?


Это ты у меня спрашиваешь ?!
Это ты в ДОС"е работаешь, а не я, тебе и видней должно быть)

Даже если такая есть (а она есть), то она не имеет ничего общего с тем что ты от нее ожидаешь в части ожидаемой тобой реакции на Alt-Enter.


 
Сергей М. ©   (2008-10-03 16:21) [24]

А можно полюбопытствовать, чем вызван это патологический махохизм - использование TP ?


 
Развёртка   (2008-10-03 16:24) [25]


> А можно полюбопытствовать, чем вызван это патологический
> махохизм - использование TP ?

чисто любопытством


 
Сергей М. ©   (2008-10-03 16:26) [26]

Ясно)


 
DrPass ©   (2008-10-03 16:54) [27]


> Развёртка   (03.10.08 16:15) [22]
> А какая тогда функция API Dos`а отвечает за нажатие клавиш?
>  

Intr из модуля DOS. Но в Windows твоя чудо-программа выполняется в виртуальной машине. И все "нажатия клавиш" в ней попадают только в твою программу, и никак не выходят за ее пределы. DOS-программа никак не сможет ничего скомандовать Windows либо передать Windows какие-то нажатия клавиш.


 
Сергей М. ©   (2008-10-03 17:17) [28]


> DOS-программа никак не сможет ничего скомандовать Windows
> либо передать Windows какие-то нажатия клавиш


Ибо про Windows ДОС-программа ничего не знает, потому что родилась в системе, рожденной до рождения Windows ..

Это я Автору)


> в виртуальной машине


Для Автора, похоже, это абракадабра)


 
Городской Шаман   (2008-10-03 18:23) [29]

Здесь вроде советуют произвести смену видеорежима на графический и обратно.

mov ax,13h
int 10h


http://www.xakep.ru/post/21508/default.asp?print=true


 
Развёртка   (2008-10-03 18:50) [30]

Городской Шаман, спасибо! Только почему-то текст стал крупного размера, видимо он делает разрешение 640х480


 
Городской Шаман   (2008-10-03 18:51) [31]


> Развёртка   (03.10.08 18:50) [30]
>
> Городской Шаман, спасибо! Только почему-то текст стал крупного
> размера, видимо он делает разрешение 640х480


Ну верни назад, И вообще почитай про функции прерывания 10h http://www.codenet.ru/progr/dos/int_0009.php


 
Городской Шаман   (2008-10-03 18:57) [32]

В общем на тебе код

//запоминаем
mov ah,0Fh
int 10h
mov cl, al

//устанавливаем графический
mov ax,13h
int 10h

//возвращаем назад
xor ax, ax
mov al, cl
int 10h


 
Развёртка   (2008-10-03 23:50) [33]

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


 
Германн ©   (2008-10-04 01:33) [34]


> Развёртка   (03.10.08 23:50) [33]
>
> Большое спасибо!
>

Так чем всё таки pif не подошёл? Бо эти игры со старыми ДОСовскими прерываниями могут и подвести. Сегодня сработало, а завтра - отлуп по полной программе!



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

Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.006 c
3-1209750958
Beer_Hunter
2008-05-02 21:55
2008.11.16
Параметризированный запрос


4-1192365003
i
2007-10-14 16:30
2008.11.16
UAC в висте...


2-1223038816
fellow
2008-10-03 17:00
2008.11.16
onmouseup и dbgrid


15-1221485083
stas
2008-09-15 17:24
2008.11.16
Драйвер типа RAM диска


15-1221653419
Правильный$Вася
2008-09-17 16:10
2008.11.16
thank you - дзенкую - дякую





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский