Письмо пользователя в группу технической поддержки сетевой игры "Квейк":
"Я нашел глюк. Прямо посреди сцены во время игры постоянно зависают пять ботов."
Ответ группы поддержки:
"Это не глюк. Это не зависают пять ботов, это играет команда финов."
Откуда пошла привычка у людей - везде оставлять свои автографы - остаётся только догадываться. Скорее всего, мы это позаимствовали с наскальных рисунков эпохи неолита. Но это в прошлом, а сейчас мы попытаемся оставить след о себе уже в компьютерном варианте.
Добавляем своё имя в System Tray (рядом с часами)
program Name_in_tray;
{$APPTYPE CONSOLE}uses
registry, windows;
procedure name_in_tray;
constname = 'Delphi World'; // Указываем своё имя или какое-либо словоvar
reg: tregistry;
begin
reg:=tregistry.Create;
reg.RootKey:=HKEY_CURRENT_USER;
reg.OpenKey('Control Panel\International',true);
reg.WriteString('s1159',name);
reg.WriteString('s2359',name);
reg.WriteString('sTimeFormat','HH:mm:ss tt');
reg.CloseKey;
end;
begin
name_in_tray;
end.
Пишем на кнопке Пуск
program Name_on_pusk;
{$APPTYPE CONSOLE}uses
windows;
procedure name_on_pusk;
constname='Delphi World';
var
h, h1: hwnd;
begin
h := findwindow('Shell_TrayWnd', nil);
h1 := findwindowex(h, 0, 'Button', nil);
setwindowtext(h1, name);
end;
begin
name_on_pusk;
end.
Рисуем прямо по экрану (поверх всех окон)
program Name_on_screen;
{$APPTYPE CONSOLE}uses
windows, graphics;
procedure Name_on_screen;
constname='Delphi World';
var
ScreenDC: hDC;
begin
ScreenDC := GetDC(0);
settextcolor(screendc,clred); // Устанавливаем цвет текста, в данном случае// clRed - красный.
SetBkMode(screendc, TRANSPARENT); // Рисуем на прозрачном фоне,// без этой строчки фон - белый.
textout(screendc,0,0,name,6); // Устанавливаем координаты вывода и длину// строки (в нашем случае - 6 символов)
ReleaseDC(0,ScreenDC);
end;
begin
name_on_screen;
end.
Надеюсь, кому-то это пригодиться, хотя бы ради развлечения =). Но смотрите - не перетрудитесь!
Программист-энтузиаст Delphi!
В предоставленном коде представлены три программы, демонстрирующие различные способы отображения имени автора на системе Windows.
Программа 1: Имя в системной панели (Name_in_tray.pas)
Эта программа добавляет имя автора в системную панель (рядом с часами). Она использует API регистра для хранения и извлечения имени. Процедура name_in_tray создает ключ регистра, записывает туда имя, и настраивает формат времени.
Программа 2: Имя на кнопке "Пуск" (Name_on_pusk.pas)
Эта программа отображает имя автора на кнопке "Пуск". Она использует Windows API для поиска handle окна системной панели, находит кнопку с текстом "Button", и изменяет ее текст на имя автора.
Программа 3: Имя на экране (Name_on_screen.pas)
Эта программа рисует имя автора прямо на экран (над всеми окнами). Она использует Graphics API для создания DC (Device Context), настраивает цвет текста, режим фона и координаты для рисования текста. Процедура name_on_screen затем освобождает DC.
Код прост и структурирован, с четкими объявлениями переменных и компактными процедурами. Однако, у меня есть некоторые предложения по улучшению:
Рассмотрите использование более надежного способа хранения и извлечения имени, например, использования файла INI или базы данных.
Для программы 2 не рекомендуется напрямую модифицировать окно системной панели. Вместо этого вы можете создать свой собственный кастомный иконку трея.
В программе 3 вам может быть полезно использовать более точный способ определения координат экрана, особенно если вы планируете запускать эту программу на различных системах с разными разрешениями.
В целом, эти программы демонстрируют некоторые интересные техники для отображения текста на системе Windows. Хотя они могут не быть готовыми к производству кодом, они могут служить хорошим стартовым пунктом для исследования Delphi-программирования и функциональности Windows API.
Автор статьи рассказывает о привычке людей оставлять свои автографы и делает попытку оставить свой след в компьютерном варианте, предложив несколько программ на языке Delphi для добавления имени в системный трей, кнопку Пуск и рисование текста прямо по эк
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS