Содержание
  ДОМОЙ
  НОВОСТИ  
  IT АКАДЕМИЯ
  WAP-ВЕРСИЯ
  ФОРУМ
  БЕЗОПАСНОСТЬ
  ПРОГРАММИРОВАНИЕ
  ИНСТРУМЕНТ ВЕБМАСТЕРА
  ВСЁ ДЛЯ КПК
  СТАТЬИ NEW
  СОФТ
  ВИДЕО
  X-INFO
  ПРОКСИ ЛИСТ
  IT МУЗЫКА
  АНЕКДОТЫ
  ССЫЛКИ
  ТЕХ. ПОДДЕРЖКА
  ПРАВООБЛАДАТЕЛЯМ
  О НАС

 

Ваш IP

3.145.89.89

Человек на сайте На сайте: 366 человек(а)

Здесь могла бы
быть Ваша
РЕКЛАМА




Консольные приложения в дельфи
с использованием 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
 


Содержание
  ДОМОЙ
  НОВОСТИ  
  IT АКАДЕМИЯ
  WAP-ВЕРСИЯ
  ФОРУМ
  БЕЗОПАСНОСТЬ
  ПРОГРАММИРОВАНИЕ
  ИНСТРУМЕНТ ВЕБМАСТЕРА
  ВСЁ ДЛЯ КПК
  СТАТЬИ NEW
  СОФТ
  ВИДЕО
  X-INFO
  ПРОКСИ ЛИСТ
  IT МУЗЫКА
  АНЕКДОТЫ
  ССЫЛКИ
  ТЕХ. ПОДДЕРЖКА
  ПРАВООБЛАДАТЕЛЯМ
  О НАС

 
Поиск по сайту
Утилиты

  Сниффер
  Лог сниффера
  MD5 и Base64
  Декодирование MD5 NEW
 Перекодировщик
  Проверить прокси
  Проверка анонимности
  Генерация пароля
  Скрипт определения IP
  Поиск информации
   Проверить IP (Whois)
   Узнать скорость закачки
   Добавить свой сайт в поисковые системы>
   Подсветка php-кода

ПОЛЕЗНАЯ ИНФОРМАЦИЯ:
  Список национальных доменных имен
  Компьютерные термины
  Смайлики
   Аналоги Win-программ в Linux
   Коды ответа HTTP сервера
   Записки невесты программиста

Здесь могла бы
быть Ваша
РЕКЛАМА





Права на содержащиеся на сайте материалы принадлежат авторам материалов и владельцам проекта.
Copyright Комп-Инфо.ру © 2005