Как запустить консольное приложение с нужным размером окна консоли
Имеется консольное приложение Windows, которое "хитрит" с окном консоли, например, в простейшем случае, такое:
#include <iostream> #include "windows.h" using namespace std; int main() { int width = 50, height = 30; HWND hWnd = GetConsoleWindow(); HMENU hm = GetSystemMenu(hWnd, FALSE); RemoveMenu(hm, SC_SIZE, MF_BYCOMMAND | MF_REMOVE); RemoveMenu(hm, SC_MAXIMIZE, MF_BYCOMMAND | MF_REMOVE); DrawMenuBar(hWnd); HANDLE b = GetStdHandle(STD_OUTPUT_HANDLE); SMALL_RECT DisplayArea = { 0, 0, width, height }; SetConsoleWindowInfo(b, TRUE, &DisplayArea); CONSOLE_CURSOR_INFO ConCurInf; ConCurInf.dwSize = 10; ConCurInf.bVisible = false; SetConsoleCursorInfo(b, &ConCurInf); COORD p; p.X = 47; p.Y = 30; SetConsoleCursorPosition(b, p); cout << "Coo"; cin.get(); return 0; }
Код проверялся в консоли имеющейся под рукой Visual Studio 2015, вот что вышло:
скриншот окна приложения
Увы, при запуске приложения, например, из-под файл-менеджера, выполняющего консольные приложения в своём окне (Far Manager) наше Coo может выглядеть не совсем Coo:
скриншот 2, запуск из-под Far
...да ещё и испортить размеры окна консоли файл-менеджера после выхода.
Решений минимум 2.
1. Поменять расширение .exe
и целевого файла на что-нибудь, например на .ex
, а потом создать (хоть в стандартном Блокноте) командный bat-файл, допустим, start.bat
со следующим содержимым и считать главным его:
@echo off start Console1.ex
Процесс будет стартовать с новым экземпляром cmd.exe
в новом окне консоли, которой и станет управлять.
папка с переименованным консольным приложением и файлом .bat
Похоже, любой файл с любым расширением и первыми двумя байтами MZ
будет обрабатываться масдайкой 7, да и 10, как .EXE
.
2. Если вариант 1 не работает, имеет смысл попробовать через PowerShell, заменив вторую строку bat-файла не нечто вроде
start powershell "Start-Process -FilePath .\Console1.exe -Wait -NoNewWindow" >log.txt
Будет медленнее, но, возможно, поможет. Вывод от powershell перенаправляется в текстовый файл log.txt
26.04.2021, 13:35 [1077 просмотров]