| Работа с WinAPI в Delphi |
|
|
| Автор Westry | ||
| 13.12.2007 г. | ||
|
Что такое WinAPI? Это функции, грубо говоря, встроенные в Windows. Большинство из них описаны в файле Windows.pas. Этот файл подключается по умолчанию каждый раз, когда ты создаёшь новый проект, поэтому тебе не нужны дополнительные действия для использования этих функций. Все функции WinAPI я рассказать не в состоянии, потому что их тысячи, но мы будет потихонечку знакомится с наиболее интересными из них.
Примеры к этим функциям я давать не буду. Если ты внимательно читал предыдущие номера и внимательно прочтёшь эту статью, то никаких проблем с реализацией у тебя не возникнет. Тем более, что я уже использовал WinAPI, когда писал статью про нестандартные окна в 5-м номере 2000г. Итак, меньше болтовни а больше дела. Первый параметр может принимать следующие значения:
Второй параметр зарезервирован и игнорируется. Для совместимости с будущими версиями лучше ставить ноль. Вот и всё, теперь ты сможешь выключать компьютер из своей программы. Теперь перейдём к режиму энергосбережения. Зачем это нужно? Например, мемед не умеет выводить компьютер из состояния каматоза, поэтому об этом можем позаботиться мы. Выключение монитора: Включение монитора:
Как видишь, функция одна, просто они отличаются только последним параметром. Теперь давай рассмотрим не менее интересную проблему - запуск только одной копии проги. Для этого мы опять же будем использовать WinAPI. Весь код будем писать в DPR файле проекта. Чтобы его вызвать, нужно выбрать Project Maneger из меню View . Теперь щёлкни правой кнопкой мышки по имени проекта. Перед тобой откроется меню, как на рисунке 1. Выбери в этом меню пункт View Source . Вот какой текст ты должен в нём написать: Давай рассмотрим самые интересные вещи. Первая API функция, которую я использую - FindWindow. Эта функция ищет окно по имени объекта окна (первый параметр) и заголовка окна (второй параметр). Если в качестве заголовка передать NIL, то будет найдено первое окно с таким именем объекта. Функция возвращает указатель на окно. После вызова этой функции я проверяю, было ли найдено какое-нибудь окно. Если нет, то программа продолжит загрузку. Если да то вызывается функция SetForegroundWindow, которая делает активным найденное окно. В качестве параметра передаётся указатель на окошко. После этого программа прерывается с помощью Application.Terminate . Это не нормальное прерывание программы. Я его использую только потому, что уверен, что никаких действий по инициализации ещё не произошло. Я не советую тебе использовать эту функцию в других случаях. Я бы и здесь не использовал её, просто нет другого выхода, потому что ещё не запущено приложение, и прерывать больше нечего. Это самый простейший и достаточно эффективный способ проверки на запуск второй копии. Совсем забыл, в файле DPR по умолчанию не подключается файл Windows, поэтому ты должен сам дописать его в раздел USES вначале проекта, как это сделал я. Вот и всё. Как видишь, WinAPI используются так же, как и любые другие функции Delphi. На сегодня всё. Первое знакомство с WinAPI закончено, но в будущем мы ещё будем встречаться с этими функциями. Удачи тебе. http://www.rtfm.4hack.com/articles.php?id1=2&id2=114 |
||
| « Пред. | След. » |
|---|



