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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2010, 20:35   #1
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию Реализация полноэкранного приложения в консоли.

Для того, что бы понять, что я хочу сделать, создайте любую консольную программу.
Запустив .exe файл, намите Alt+Enter.

сделав это, я решил проблему развертывания на своем компьютере (далее это приложение всегда запускается полнооконным), но при запуске на других компьютерах нужно повторить эти шаги. Как можно автоматизировать этот процесс?
Помогли тебе - помоги другому.

Последний раз редактировалось Alt; 14.03.2010 в 20:38.
Alt вне форума Ответить с цитированием
Старый 14.03.2010, 21:06   #2
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Может быть при установке этого приложения в реестре попытаться прописать чтоб система его запускала в полном экране:

Например:
HKEY_CURRENT_USER\Console\C:_main_a ssembler_proga1_PROGA1.EXE
Параметр FullScreen Шестнадцатеричный - значение =1.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 14.03.2010, 21:10   #3
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

С реестром, к сожалению, работать не умею. Можете предоставить строки (желательно с комментариями)?

Кстати, местонахождение ехе-файла может быть неизвестным...
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 14.03.2010, 21:16   #4
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Я вот нашел реализацию:http://www.sources.ru/wiki/doku.php?...een_in_console
Нельзя-ли менее нагроможденно?
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 14.03.2010, 21:39   #5
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Если нахождение exe неизвестно, то с реестром вариант отпадает, так как там в кусте путь указывается.

А по поводу SetConsoleDisplayMode и GetConsoleDisplayMode - по моему стоит попробовать. Сам их не юзал никогда (не зря они недокументированные). Да и там вроде не так уж и нагромождённо.
Ну и copy/paste в помочь.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 14.03.2010, 21:48   #6
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Попробовал убрать лишнее (т.к. все современные версии windows на ядре NT, то остальные я попросту отмел), получилось вот что:

Код:
function GetConsoleDisplayMode(var lpdwMode: DWORD): Boolean;
type
  TGetConsoleDisplayMode = function(var lpdwMode: DWORD): BOOL;
  stdcall;
var
  hKernel: THandle;
  GetConsoleDisplayMode: TGetConsoleDisplayMode;
begin
  Result := False;
  hKernel := GetModuleHandle('kernel32.dll');
  if (hKernel > 0) then
  begin @GetConsoleDisplayMode :=
      GetProcAddress(hKernel, 'GetConsoleDisplayMode');
    if Assigned(GetConsoleDisplayMode) then
    begin
      Result := GetConsoleDisplayMode(lpdwMode);
    end;
  end;
end;
function SetConsoleDisplayMode(hOut: THandle; dwNewMode: DWORD;
  var lpdwOldMode: DWORD): Boolean;
type
  TSetConsoleDisplayMode = function(hOut: THandle; dwNewMode: DWORD;
  var lpdwOldMode: DWORD): BOOL;
  stdcall;  
var  
  hKernel: THandle;  
  SetConsoleDisplayMode: TSetConsoleDisplayMode;  
begin  
  Result := False;
  hKernel := GetModuleHandle('kernel32.dll');  
  if (hKernel > 0) then  
  begin @SetConsoleDisplayMode :=  
      GetProcAddress(hKernel, 'SetConsoleDisplayMode');
    if Assigned(SetConsoleDisplayMode) then  
    begin  
      Result := SetConsoleDisplayMode(hOut, dwNewMode, lpdwOldMode);  
    end;  
  end;  
end;          
function SetConsoleFullScreen(bFullScreen: Boolean = True): Boolean;
var  
  dwOldMode, dwNewMode: DWORD;
  hOut: THandle;  
begin
// if Win32Platform = VER_PLATFORM_WIN32_NT
    dwNewMode := Ord(bFullScreen);
    GetConsoleDisplayMode(dwOldMode);
    hOut := GetStdHandle(STD_OUTPUT_HANDLE);
    Result := SetConsoleDisplayMode(hOut, dwNewMode, dwOldMode);
end;

У меня на Win Xp работает ) Достаточно в самом начале ввести SetConsoleFullScreen;
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цвет и анимация в консоли 32-битного приложения oleg kutkov Общие вопросы C/C++ 3 15.04.2008 14:03
от консоли к окну ёжик Общие вопросы C/C++ 3 06.04.2008 17:51
Эмуляция консоли... Sota Общие вопросы C/C++ 4 20.01.2008 01:04
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21