- •Для работы с окнами Windows предоставляет большое количество функций, которые описаны в модуле
- •BringWindowToTop - Выводит окно поверх других по Z- порядку
- •GetWindowLong - Узнает информацию о заданном окне GetWindowRect - Достает Rect всего окна
- •Ниже представлен фрагмент кода, позволяющий определить наличие окна в системе:
- •Первый параметр - заголовок окна, с которым надо что-либо сделать ( в данном
- •HWND_BOTTOM - Размещает окно внизу Z - последовательности. Если параметр hWnd идентифицирует самое
- •SWP_HIDEWINDOW - после проделаных действий над окном ( перемещением и изменением размера )
- •setwindowtext (findwindow(nil,'1.txt - Блокнот'),'Окно Хакера')
- •postmessage( findwindow(nil,'заголовок окна'), wm_команда,
- •Функция GetNextWindow
- •Функция: GetForegroundWindow
- •function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Обязательно stdcall !!!
- •Функция GetClassName
- •Функция GetWindowText
- •function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Var Nm:Array[0..255] of Char;
- •Функция IsIconic
- •Функция IsWindowEnabled
- •Функция IsZoomed
- •Функция GetWindowDC
- •Скопировать все окно в BMP
- •Begin
- •для того, чтобы скопировать весь экран или часть экрана можно использовать подобные функции.
- •Функция GetWindowLong
- •Function WinIconToBMP(Wd:HWND);
- •Функция GetWindowThreadProcessId
- •Программа прячет кнопку на 5 сек, затем снова показывает и через секунду пишет
- •showwindow(hnd,sw_show); // снова показываем кнопку
- •Задание на самостоятельую работу
Для работы с окнами Windows предоставляет большое количество функций, которые описаны в модуле Windows.pas, и экспортируются из Windows'овских библиотек (DLL - Dynamic Link Library).
функции API
BringWindowToTop - Выводит окно поверх других по Z- порядку
CloseWindow - Минимизирует (не закрывает) окно EnableWindow - Делает окно доступным/недоступным EnumChildWindows - Просматривает все дочерние окна EnumWindows - Просматривает все главные окна FindWindow - Ищет окно в системе
FindWindowEx - Ищет дочернее окно GetClassName - Узнает имя класса заданного окна
GetClassLong - Узнает информацию о данном классе GetClientRect - Достает Rect клиентской области окна GetDesktopWindow - Возвращает дескриптор Desktop GetForegroundWindow - Ищет верхнее окно системы GetNextWindow - Находит следующее или предыдущее окно
GetWindow - Возвращает дескриптор окна, с заданным положением
GetDC - Ищет дисплейный контекст окна
GetWindowLong - Узнает информацию о заданном окне GetWindowRect - Достает Rect всего окна GetWindowText - Возвращает текст окна GetWindowTextLength - Возвращает длину текста окна GetWindowThreadProcessId - Узнает процесс, которому принадлежит заданное окно
IsChild - Дочернее ли окно IsIconic - Свернуто ли окно
IsWindow - Есть ли такое окно в системе IsWindowVisible - Видимое ли это окно IsZoomed - Максимизировано ли это окно MoveWindow - Перемещает окно
OpenIcon - Восстанавливает окно из иконки SetForegroundWindow - Назначает верхнее окно системы SetWindowLong - Устанавливает новые параметры окна SetWindowPos - Устанавливает позицию окна SetWindowText - Изменяет заголовок окна
ShowWindow - Показывает окно с заданными параметрами WindowFromPoint - Возвращает окно из заданной позиции
Ниже представлен фрагмент кода, позволяющий определить наличие окна в системе:
if findwindow(nil, '1.txt - Блокнот') <>0 then showmessage ('Окно присутствует');
SetWindowPos(findwindow(nil,'1.txt - Блокнот'),HWND_BOTTOM,1,1,20,20,SWP_nosize);
Первый параметр - заголовок окна, с которым надо что-либо сделать ( в данном случае - передвинуть). Заголовок передается функцией "ловли" окна findwindow(nil,'1.txt - Блокнот') , где 1.txt - Блокнот заголовок окна
Второй параметр - положение окно ( т.е. его Z-расположение ) он нам сейчас не нужен. Просто считайте, что он должен быть HWND_BOTTOM
Третий параметр - координыты окна по "Оси X" в пикселах.
Четвертый параметр - координыты окна по "Оси Y" в пикселах (т.е. этими координмтами вы указываете куда двигать окно).
Пятый - размер окна по горизонтали Шестой - размер окна по вертикали
Седьмой параметр, он имеет несколько значений. Вот основные из них:
HWND_BOTTOM - Размещает окно внизу Z - последовательности. Если параметр hWnd идентифицирует самое верхнее окно, окно теряет свое самое верхнее
состояние и помещается внизу всех других окон.HWND_NOTOPMOST - Помещает окно выше всех не
самых верхних окон (то есть позади всех самых верхних окон). Этот флажок не имеет никакого эффекта, если окно - уже не самое верхнее окно.
HWND_TOP - Помещает окно наверху Z -
последовательности.
HWND_TOPMOST - Помещает окно выше всех не самых верхних окон. Окно поддерживает самую верхнюю позицию даже, когда оно дезактивировано.
SWP_HIDEWINDOW - после проделаных действий над окном ( перемещением и изменением размера ) окно прячется
SWP_NOSIZE - если указан этот параметр, то 5й и 6й параметры учитываться не будут, т.е. окно менять размер не будет (этот параметр указан в нашем примере )
SWP_NOMOVE - если указан этот параметр, то 3й и 4й параметры учитываться не будут, т.е. окно не будет перемещаться.
SWP_SHOWWINDOW - после проделанных действий над окном
( перемещением и изменением размера ) окно будет показано ( работает только если окно было спрятано)
setwindowtext (findwindow(nil,'1.txt - Блокнот'),'Окно Хакера')
Showwindow(findwindow(nil,'1.txt - Блокнот'),sw_hide);
SW_HIDE -Прятать окно SW_MAXIMIZE -Максимизировать окно SW_MINIMIZE -Минимизировать окно
SW_SHOW -показать окно (Его надо вызывать если вы хотите показать уже спрятанное окно)
postmessage( findwindow(nil,'заголовок окна'), wm_команда,
парам3, парам4);
В первом параметре - findwindow(nil,'заголовок окна')
передается заголовок окна.
Второй пареметр - комманда, указывающая какое действие должно совершиться над окном.
Все эти комманды начинаются на WM_
(wm_size, wm_quit, и т.д.)
Третий и четвертый параметры(парам3 и парам4) - это параметры wm_комманды.
postmessage(findwindow(nil,'1.txt - Блокнот'), wm_quit,0,0);
Функция GetNextWindow
Синтаксис: function GetNextWindow(Wnd: HWnd; Flag: Word): Hwnd;
Описание: Считывает из Wnd следующее или предыдущее окно. В случае окна верхнего уровня ищется следующее окно верхнего
уровня, а в случае дочернего окна ищется следующее дочернее окн
параметры:
Wnd: идентификатор окна.Flag: Одна из констант
gw_HWndNext - искать следующее окно gw_HwndPrev - искать предыдущее окно.
возвращаемое значение: Идентификатор окна.
Функция GetNextWindow находит все окна текущего уровня (если задано окно верхнего уровня, - то ищет окно верхнего уровня, если дочернее окно - то список дочерних)
Осталось определить, как найти исходный описатель окна, от которого будем плясать (параметр WND функции)
Можно попробовать начать поиски с верхнего окна системы. Его можно определить при помощи следующей функции API: