08.05.2010 от Иван Ширко
Наш Delphi FAQ постоянно пополняется новыми готовыми функциями, каждая из которых отлично решает свою маленькую задачу. Вот список новинок:
Заглядывайте к нам в Delphi FAQ — вы всегда найдете то, что вам нужно.
Рубрики: Delphi, Новости | Комментарии (6) »
06.05.2008 от Иван Ширко
Скачать программу Установка и удаление программi (исходники на Delphi + exe)
В Панели управления Windows находится апплет «Установка и удаление программ». Название говорит само за себя: с помощью этого апплета мы удаляем и устанавливаем программы. Давайте посмотрим, как он работает. При загрузке апплет читает все ключи из раздела реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall (именно в этот раздел прописываются сведения об разинсталлировании программ). Из каждого ключа читается параметр DisplayName (для системных приложений – QuietDisplayName) и отображается его значение. Если пользователь нажал «Добавить/удалить…», то из параметра UninstallString считывается и выполняется командная строка.
А теперь реализуем нечто подобное в Delphi, но с некоторыми отличиями: добавим возможность удаления сведений о программе из реестра (если она была удалена «вручную») и удаления компонентов Windows (в «Удаление и установка программ» для этого нужно перейти на закладку «Установка Windows»).
Создайте новый проект и разместите на форме три кнопки (TButton) и ListBox: TListBox как показано на рисунке 1:
Рубрики: Delphi, Сделай сам | Комментарии (30) »
30.03.2008 от Иван Ширко
скачать примеры к статье (плагины + исходники на Delphi)
Работать с плеером Winamp мы научились в статье Управление Winamp. Теперь перейдем к разработке плагинов для него.
Плагины к Winamp бывают пяти видов:
- Input – плагины для проигрывания различных форматов;
- Output – для записи музыки в различных форматах;
- General Purpose – плагины общего назначения;
- DSP/Effect – для обработки звука;
- Visualization – плагины, которые делают что-нибудь в такт музыке.
Плагин к Winamp представляет из себя обычную динамическую библиотеку (DLL – Dynamic Link Library), которая должна экспортировать необходимую для данного плагина информацию. Шаблон библиотеки для любого типа плагинов можно взять на сайте Winamp’a – http://www.winamp.com. В этой статье мы рассмотрим процесс создания самого впечатляющего, на мой взгляд, типа плагинов – визуализационного.
В составе визуализационного плагина можно выделить заголовок и модули. Вот формат этих частей:
Рубрики: Delphi, Winamp, Сделай сам | Комментарии (16) »
12.02.2008 от Иван Ширко
Господа программисты! Вы на календарь хоть изредка поглядываете? Нет? Так наведите мышкой на часики, которые обычно находятся справа-внизу экрана. Появилась подсказка? Ага… 12 февраля 2008 года (если конечно вы для обхождения триала не переводили дату). Год нам не важен, а вот на число и месяц обратите особое внимание. Скоро будет… нет, 23 февраля тоже скоро будет, но до него еще есть 14 февраля — День Святого Валентина. Надо бы поздравить свою вторую половинку. Разумеется, вы лучше меня знаете, как это сделать, но, если позволите, я подкину вам небольшое дополнение к поздравлению. Программа-валентинка, простенькая, на Delphi, попалась мне при просмотре форума на http://delphimaster.ru. Автор — Dmitry S. Надеюсь, он простит мне маленький пиар его творения. Сама программа может послужить примером полупрозрачности, проигрывания midi, создания окон, работы с ресурсами.
На Блоггере файлы размещать нельзя, так что пока я не обзавелся нормальным хостингом (что будет, надеюсь, скоро), файлы буду хранить на народе. Валентинку можете скачать отсюда: http://ivanfdc.narod.ru/download.html или http://argi.ru/upload/heart3-w.rar. 225 КБ. В архиве исходники + сама программа. Текст меняется в модуле WindowMessage.pas.
Рубрики: Delphi | Комментарии (10) »
28.01.2008 от Иван Ширко
Сегодня мы займёмся самым популярным web-браузером в мире – Internet Explorer’ом. Кто-то обожает эту программу, кто-то терпеть её не может, но, как ни крути, пока что ни один конкурент IE не может приблизиться к нему по возможностям (не считая, конечно, браузеров, построенных на движке IE). Итак, что мы будем делать с IE? Да ничего страшного… Мы просто научимся управлять им так же, как и любым другим окном. Для закрепления полученных знаний сделаем программу для управления IE при помощи горячих клавиш. Для пущего эффекта добавим иконку программы на Системную панель (SysTray). Итак, поехали… Первым делом разберёмся с двумя приёмами программирования, которые мы будем использовать и в последующих статьях данного цикла: 1) Как работать с «горячими» клавишами? 2) Как добавить свой значок на Системную Панель (SysTray, можно узнать по характерным для неё часикам)?
На первый вопрос я уже дал частичный ответ в статье Сделай сам: «Вскрывалка паролей», но нам нужно копнуть немного глубже, а второй вопрос мы ещё вообще не затрагивали.
Рубрики: Delphi, Сделай сам | Комментарии (2) »
09.01.2008 от Иван Ширко
Продолжаем серию «Сделай сам», посвящённую практическому применению Delphi. На этот раз мы поговорим о такой важной составляющей жизни нашего компьютера, как автозагрузка. При загрузке Windows могут запускаться самые разные приложения: от системной панели (вы её можете узнать по характерным для неё часам) до программы оптимизации реестра. Все мы любим устанавливать новые программы. А некоторые из них, дабы мы с ними никогда не расставались, втихую прописывают себя в автозагрузку. Вот и получается, что со временем Windows загружается всё дольше и дольше. А всё потому, что с ней за компанию запускаются различные «удобняшки», антивирусы (а иногда и их анти-сородичи) и т.п.
Вывод из всего вышесказанного: время от времени нужно проводить «зачистку» в автозагрузке. Продвинутыми пользователями это делается при помощи редактора реестра и Блокнота, а все остальные используют специальные программы. Давайте посмотрим, что нам предлагает Windows для управления автозагрузкой. После недолгих поисков была найдена программа MsConfig (лежит она в каталоге …\Windows\System). MsConfig позволяет просматривать список файлов, запускающихся вместе с Windows и удалять элементы из автозагрузки с возможностью восстановления. Программа обрабатывает файл Win.ini, папку «Автозагрузка» и следующие ключи реестра: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run и HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices.
Теперь, когда есть с чем сравнить, сделаем свою программу для управления автозагрузкой. Вот что наше творение будет уметь делать к концу статьи: 1) Всё, что умеет MsConfig, за исключением восстановления удалённых из автозагрузки файлов; 2) Добавлять новые файлы в автозагрузку и изменять пути к существующим;
3) Обрабатывать большее количество ключей реестра, чем MsConfig.
Теперь немного теоретических сведений: 1) В Win.ini есть два параметра: Load и Run. Все файлы, имена которых записаны в этих параметрах через пробел, будут загружаться при старте Windows. А значит, в именах файлов не должно быть пробелов. Этого легко добиться при помощи функции sysutils.ExtractShortPathName (filename).
2) В реестре есть «автозагрузочные» ключи с одинаковыми названиями: Run и RunOnce. Одна пара находится в разделе HKEY_LOCAL_MACHINE, а другая – в HKEY_CURRENT_USER. В связи с этим, в нашей программе будем осуществлять переход между разделами при помощи двух компонентов TradioButton (см. рис. 1).
Рубрики: Delphi, Сделай сам | 1 Комментарий »
17.12.2007 от Иван Ширко
Каждому пользователю ПК время от времени приходится вводить пароли: для установки программы, для соединения с интернетом, для получения почты и т.д. Как правило, при вводе пароля, вместо нормальных символов появляются звёздочки (‘*’). Делается такая конспирация не только для сокрытия пароля от посторонних глаз, но и для того, чтобы злоумышленник, получивший доступ к компьютеру, не мог узнать пароли, сохранённые в системе. Но, как известно, нет совершенной защиты, поэтому теперь можно найти много программ для извлечения паролей из-под «звёздочек». Некоторые программы могут показывать пароль в отдельном окошке, другие же неким чудесным образом заставляют превратиться «звёздочки» в нормальные символы. В данной статье мы рассмотрим процесс создания программы, которая умеет «выковыривать» пароли двумя вышеописанными способами.
Вначале немного теории. Windows, судя по названию, это «сборище» окон. Каждое окно обычно содержит другие окна, т.е. является родителем для некоторых других окон (эти «другие окна» называют дочерними). Для нашей программы нам достаточно знать, что то поле, куда мы вводим пароли является хоть и маленьким, но окном. А значит, как и любое порядочное окно, оно имеет параметр «текст окна» и умеет принимать\отсылать сообщения. Именно на данных весьма полезных свойствах полей ввода основаны программы для извлечения паролей из-под «звёздочек».
Итак, способ первый для «вскрытия» паролей: нужно просто узнать текст окна, содержащего пароль. Вот и всё, никаких сложностей. Правда, работать данный способ будет только в Win9x и, возможно, в WinMe. Осталось только написать функцию для получения текста произвольного окна:
Рубрики: Delphi, Сделай сам | Комментарии (2) »
10.12.2007 от Иван Ширко
Пример к статье (программа + исходники на Delphi)
Все мы с упоением в детстве смотрели мультики, да и сейчас иногда, щёлкая каналы, с ностальгией в душе останавливаемся посмотреть на рисованных персонажей, живущих своею жизнью.
Что же представляет из себя анимация? Да просто сменяющие одна другую картинки. И чем быстрее и плавнее меняется изображение, тем лучше выглядит анимация. Возможностей современного компьютера вполне достаточно, чтобы обеспечить нормальное отображение любой анимации. Но в играх анимация формируется динамически, так что любая задержка отображения картинок может вызвать мерцание. Чтобы этого избежать используют различные алгоритмы вывода изображения на экран. Давайте рассмотрим простой способ, с помощью которого можно делать динамические анимации, отлично отображающиеся даже на слабых компьютерах.
Итак, разберём самый простой случай, когда нам нужно двигать простую фигуру (например, круг) по одноцветному фону. Реализовать это можно разными способами. Можно, например, действовать напрямую: нарисовать поверх фона круг и через некоторый промежуток времени заливать всю картинку цветом фона, после чего рисовать круг со смещёнными координатами. В итоге мы получим вполне движущуюся фигуру, но вот мерцание будет всё портить. Решение напрашивается само собой: нужно заливать не весь холст цветом фона, а только ту область, из которой нам нужно стереть изображение круга. В данном случае достаточно просто нарисовать цветом фона такой же круг, но у которого цвет равен цвету фона, что приведёт к стиранию начального круга. А теперь представим, что у нас по одноцветному фону движется уже сложное изображение. Здесь уже не удастся пиксель в пиксель затереть это изображение, так что придётся обводить его некоторой простой областью (например, прямоугольником) и закрашивать её.
Всё это, конечно, хорошо, но описанные случаи не представляют из себя особой практической ценности и используется разве что в учебных целях. Так что усложним ситуацию: пусть сложное изображение движется по сложному фону. Закрашивать тут не имеет смысла, так что нужно придумывать что-нибудь новенькое. Вот тут мы и подошли к методу двойной буферизации. Этот метод использовался и используется в играх, программах с графическим интерфейсом, да и просто в стандартных компонентах операционных систем. Как следует из названия, метод двойной буферизации предполагает наличие двух буферов. Один нужен для хранения перемещаемого изображения, а другой для хранения той области фона, в которую мы собираемся прорисовать это изображение. То есть последовательность действий примерно такая:
Рубрики: Delphi | Комментарии (2) »