| 
 Консольные приложения в дельфис использованием Windows API функций.
 
 
 Дарова! В этой статье я расскажу как работать с консольными приложениями в delphi.
Я покажу нетолько как просто вывести надпись, а так же как изменять аттрибуты
текста и окна вывода.
Итак, первым делом надо получить дескриптор нашей консоли - с помощью
функции GetStdHandle(), которой мы передаём в виде единственного параметра, 
строку - STD_OUTPUT_HANDLE, и возвращаемый дескриптор присваиваем переменной,
типа integer. Всё! Теперь мы можем изменять любые параметры консоли, размер,
цвет, заголовок, позицию.... Вообщем рассмотрим на примере:
 program Cons;
 
 {$APPTYPE CONSOLE}
 uses
 windows,
 messages, // ЗДЕСЬ НУЖНА ТОЛЬКО ДЛЯ ЗАМЕНЫ ИКОНКИ
 shellapi; // ЗДЕСЬ НУЖНА ТОЛЬКО ДЛЯ ЗАМЕНЫ ИКОНКИ
 
 procedure WrtToConsole;
 var
 hCon: integer;
 cr : COORD;
 handl : HWND;
 ico : HICON;
 begin
 hCon := GetStdHandle(STD_OUTPUT_HANDLE);
 cr.X := 0;
 cr.Y := random(40);
 windows.SetConsoleTitle('RULEZZ!');
 handl := FindWindow(nil, 'RULEZZ!');
 ico := ExtractIcon(0, 'icon.ico', 0);
 SendMessage(handl, WM_SETICON, 0, ico);
 windows.SetConsoleCursorPosition(hCon,cr);
 SetConsoleTextAttribute(hCon,11);
 WriteLn('comp-info.ru <--> CODING');
 SetConsoleTextAttribute(hCon,35);
 WriteLn('comp-info.ru <--> CODING');
 end;
 
 begin
 randomize;
 WrtToConsole;
 readln;
 end.
 
 Итак, что здесь к чему. Рассматривать будем процедуру WrtToConsole(). В
ней сначала обьявляем переменные - hCon типа integer для хранения стандартного
дескриптора вывода нашей консоли, cr типа COORD - в ней будут храниться координаты,
в которые мы переместим каретку в консоли, handl -  хэндл окна консоли, и ico - 
в ней будем хранить дескриптор иконки, установленной в нашей консоли.
Теперь, собственно к самому кодингу - сначала получаем дескриптор
окна вывода функцией GetStdHandle, потом устанавливаем случайное значение для переменной
с координатой, и устанавливаем текст заголовка окна - RULEZZ!, потом ищем окно с этим же заголовком
и присваиваем возвращённое функцией значение переменной handl. Далее извлекаем иконку из файла функцией
ExtractIcon - она содержится в модуле ShellApi, а не в Windows, поэтому подключаем его.
Далее посылаем окну сообщение WM_SETICON (WM_SETICON как и другие сообщения хранятся в модуле MESSAGES),
и устанавливаем иконку окна. Далее функцией SetConsoleCursorPosition() устанавливаем 
позицию каретки. А вот далее начинается самое интересное - SetConsoleTextAttribute.
Для людей тёмных в английском языке перевожу - установка консольных атрибутов текста.
Первым параметром мы всегда передаём дескриптор вывода, а вот второй параметр самый интересный -
он задаёт аттрибуты текста - тоесть цвет текста и фон текста. В примере я указал 11 и 35 - в итоге,
после вывода текста в консоль с помощью процедуры WriteLn, получилось нечто "зеркальное".
 Ну вот собственно и всё! Я показал лишь несколько основ, что может пригодиться при работе с консольными приложениями.
И напоследок как всегда -
Исходник
 SLAyer Другие статьи По всем вопросам и предложениям по сайту пишите на info@comp-info.ru 
 
 
 |