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

Вниз

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

 
Развёртка   (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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.017 c
2-1223392031
Matveih1
2008-10-07 19:07
2008.11.16
Как передать соединение с БД в подгружаемый модуль?


11-1195480274
INFINITY
2007-11-19 16:51
2008.11.16
Установка MСK на D2006


2-1222942248
Сергей
2008-10-02 14:10
2008.11.16
индексы в базе dbf


2-1222931133
031178
2008-10-02 11:05
2008.11.16
Обновление MS SQL


2-1223374645
Zalumhan
2008-10-07 14:17
2008.11.16
ListView1.Items.Count