Четверг, 16.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нравится раздел статьи?
Всего ответов: 68
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » WinAPI

Функции Win API для работы с окнами

FindWindow
GetWindow
GetWindowText
SetWindowText
IsWindow
MoveWindow
IsWindowVisible
EnableWindow
IsWindowEnabled
WindowFromPoint
ShowWindow
CloseWindow
SetWindowPos
GetClassLong
SetClassLong
GetWindowLong
SetWindowLong
GetDesktopWindow
GetParent


Функция FindWindow

function FindWindow(className,WindowName : PChar) : HWND;
Функция возвращает описатель окна, удовлетворяющий запросу (0 -если такого окна не найдено).

ClassName
Имя класса, по которому призводится поиск среди ВСЕХ окон системы.
WindowName
Заголовок окна

Один из параметров может быть равен nil, тогда поиск ведется по другому параметру.
Пример:

...
Var Hwnd1 : HWND;
Begin
Hwnd1:=FindWindow('TForm1',nil);//Поиск окна с именем класса TForm
end;
...

Функция GetWindow

function GetWindow(Wnd : HWND; Param) : HWND
Функция возвращает описатель окна удовлетворяющий запросу.

Wnd
Описатель какого-либо начального окна
Param
Принимает одно из следующих значений-констант:
gw_Owner
Возвращается описатель окна-предка (0 - если нет предка).
gwHWNDFirst
Возвращает описатель первого окна (относительно Wnd).
gw_HWNDNext
Возвращает описатель следующего окна (окна перебираются без повторений, т.е. если вы не меняли параметр Wnd функции, повторно описатели не возвращаются)
gw_Child
Возвращает описатель первого дочернего окна.

Пример:

 ...
 var s:string; Han, Child : Hwnd;
 Begin
 han:=GetWindow(Form1.handle,gw_HWNDFirst);{получаем описатель первого окна 
 относительно окна формы Form1}
 
 End;
 
 ...

Функция GetWindowText

function GetWindowText(hWnd: HWND; lpString: PChar; nMaxCount: Integer): Integer;
Функция возвращает текст окна. Для формы это будет заголовок, для кнопки - надпись на кнопке.

hWnd
Описатель того окна, текст которого нужно получить.
lpString
Переменная, в которую будет помещен результат
nMaxCount

Максимальная длина текста, если текст длиннее, то он обрезается.

Пример:

...
Var Buff : Array[0..127] of char; s : String; 
Begin
GetWindowText(Form1.Handle,Buff,SizeOf(Buff));
s:=StrPas(Buff);
label1.caption:=s;
End 
...

Функция SetWindowText

function SetWindowText(hWnd: HWND; lpString: PChar): BOOL;
Устанавливает текст окна.

hWnd
Описатель того окна, текст которого нужно установить
lpString
Строка, содержащая устанавливаемый текст.

Пример:

...
Var Buff : Array[0..127] of char;
Begin
StrPCopy("New Text",Buff);
SetWindowText(form2.button1.handle,Buff);{установить надпись на кнопке
 Button2 "New Text"}
End;

...

Функция IsWindow

function IsWindow(hWnd: HWND): BOOL; Возвращает True, если окно с заданным описателем существует и False в противном случае.

Hwnd
Описатель нужного окна

Функция MoveWindow

MoveWindow(hWnd: HWND; X, Y, nWidth, nHeight: Integer; bRepaint: BOOL): BOOL; Перемещает окно в новую позицию.

hWnd
Описатель перемещаемого окна.
X, Y, nWidth, nHeight
Соответственно: новые координаты X,Y; новая ширина, высота.
bRepaint
Булево значение, показывающее будет ли окно перерисовано заново.

См. Также.


Функция IsWindowVisible

function IsWindowVisible(hWnd: HWND): BOOL;
Возвращает True если данное окно видимо.
 

hWnd
Описатель окна.

Функция EnableWindow

function EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL;
Устанавливает доступность окна(окно недоступно, если оно не отвечает на события мыши, клавиатуры и т.д.). Аналог в Delphi свойство Enabled компонентов. EnableWindow возвращает True, если всё прошло успешно и False в противром случае.

hWnd
Описатель окна.
bEnable
Булево значение, определяющее доступность окна.

Пример:

...
EnableWindow(Form1.Button1.Handle,false);
 //Эквивалент - Form1.Button1.Enabled:=false
...

Функция IsWindowEnabled

function IsWindowEnabled(hWnd: HWND): BOOL;
Возвращает для заданного окна: True, если окно доступно и False в противном случае.

hWnd
Описатель окна.

Функция WindowFromPoint

WindowFromPoint(Point: TPoint): HWND;
Возвращает описатель окна, находящегося в данной точке экрана.

Point
Координата точки экрана типа TPoint(определение типа смотри ниже)

Функция

type TPoint = Record
 x: Longint;
 y: Longint;
 end;

Функция ShowWindow

function ShowWindow(hWnd: HWND; nCmdShow: Integer): BOOL; Показывает или прячет окно.

hWnd
Описатель нужного окна
nCmdShow
Константа, определяющая, что будет сделано с окном:
SW_HIDE
SW_SHOWNORMALSW_NORMAL
SW_SHOWMINIMIZED
SW_SHOWMAXIMIZED
SW_MAXIMIZE
SW_SHOWNOACTIVATE
SW_SHOW
SW_MINIMIZE
SW_SHOWMINNOACTIVE
SW_SHOWNA
SW_RESTORE
SW_SHOWDEFAULT
SW_MAX

Пример:

...
Begin 
 ShowWindow(Application.Handle,sw_hide);//Будет скрыт значок приложения
 на панели задач
 ShowWindow(form1.Handle,sw_hide);//Будет скрыта форма Form1
End; 
...

Функция CloseWindow

function CloseWindow(hWnd: HWND): BOOL; stdcall;
Закрывает окно.

hWnd
Описатель закрываемого окна.

SetWindowPos

function SetWindowPos(hWnd: HWND; hWndInsertAfter: HWND; X, Y, cx, cy: Integer; uFlags: UINT): BOOL; stdcall;
Устанавливает окно в новую позицию

hWnd
Оптсатель окна
hWndInsertAfter
Описатель окна, перед которым в списке Z-Order будет вставлено окно hWnd, или одна из следующих констант:
HWND_BOTTOM
Поместить окно на дно списка Z-Order
HWND_TOP
Поместить окно на верх списка Z-Order
X, Y, cx, cy

Соответственно - новые горизонт. , верт. позиции окна (X, Y), а также новая ширина
и высота (cx, cy)

uFlags
Одна или несколько (разделенных OR) следующих констант:
SWP_NOSIZE
Не изменять размер окна после перемещения (cx, cy игнорируются)
SWP_NOZORDER
Не изменять положение окна в списке Z-Order
SWP_SHOWWINDOW
Сделать окно видимым после перемещения
SWP_HIDEWINDOW
Спрятать окно после перемещения
SWP_NOACTIVATE
Не передавать фокус окну после перемещения
SWP_NOMOVE
Не перемещать окно (игнорируется X, Y)

См. Также


Функция GetClassLong

function GetClassLong(hWnd: HWND; nIndex: Integer): Integer;
Эта функция возвращает 32-разрядное целое, взятое из определенного поля записи TWndClassEx указанного окна.

hWnd
Описатель окна
nIndex
Константа, определяющая что будет возвращено. Должна быть одна из следующих:
GCL_MENUNAME
Возвращает указатель на строку, содержащую имя меню класса, определенного в файле ресурсов связанного с некоторой программой.
GCL_HBRBACKGROUND
Возвращает описатель (HBRUSH) кисти фона, ассоциированной с классом
GCL_HCURSOR
Возвращает описатель (HCURSOR) курсора, фссоциированного с классом
GCL_HICON
Возвращает описатель (HICON) пиктограммы, ассоциированной с классом
GCL_HMODULE
Возвращает описатель процесса (HMODULE), зарегистртровавшего класс.
GCL_CBWNDEXTRA
Возвращает размер памяти (в байтах), выделенной под хранение дополнительных данных ДАННОГО ОКНА. Описание как использвать эту память, смотри в описании функции GetWindowLong
GCL_CBCLSEXTRA
Возвращает размер памяти (в байтах), выделенной под хранение дополнительных ДАННОГ КЛАССА
GCL_WNDPROC
Возвращает адрес оконной процедуры, связанной с классом.
GCL_STYLE
Возвращает стиль класса (наличие того или иного стиля проверяется побитовой операцией And с помощью констант типа cs_XXX )
GCL_HICONSM

Обратите внимание: в случае, когда функция возвращает указатель, необходимо приведение типов (Integer -> Pointer). Делать это можно так:

...
var p : Pointer;
Begin
p:=PChar(GetClassLong(wnd,GCL_WNDPROC));
//Делайте затем с p что хотите (если сможете...)
End;
...

Функция SetClassLong

function SetClassLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Integer; Парная функция функции GetClassLong. Устанавливает в нужное поле соответствующее значение.
Функция возвращает старое значение поля, чтобы его потом можно было исправить или же возврашается ноль, если что-то пошло не так как надо.

hWnd
Описатель окна
nIndex
Одна из констант GCL_XXX из функции GetClassLong. В зависимости от значения этого поля будет изменнено нужное поле.

Обратите внимание:при установке полей-указателей необходимо приведение типа Pointer к типу Integer.

...
var p : Pointer;
 l : Integer;
Begin
...
l:=SetClassLong(wnd,GCL_WNDPROC,Integer(p));
//p - может быть и адресом любого объекта pr: @pr
End;
...

Функция GetWindowLong

function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; Возвращает информацию о некотором окне в виде 32-битного целого.

hWnd
Описатель окна
nIndex
Константа,определяющая, что будет возвращено. Должна быть одна их следующих:
 
GWL_WNDPROC
Возвращает адрес оконной процедуры, связанной с данным окном. Полученный адрес (после соответсвующих приведений типов) может использоваться в функции CallWindowProc. Данное значение обычно используют, если хотят заменить существующую оконную процедуру на свою собственную, при этом, чтобы не потерять работоспособности окна, обычно и используют CallWindowProc.
GWL_HINSTANCE
Возвращает описатель приложения, заданный при создании окна функцией CreateWindowEx.
GWL_HWNDPARENT
Возвращает описатель (HWND) родительского окна
GWL_STYLE
Возвращает стиль окна. Конкркетные значения стилей узнаются при помощи побитовой операции And и констант WS_XXX
GWL_EXSTYLE
Возвращает расширенный стиль окна. Конкркетные значения стилей узнаются при помощи побитовой операции And и констант WS_EX_XXX
GWL_USERDATA
Возвращает 32-битное целое, ассоциированное с окном (это последний параметр в вызове CreateWindow или CreateWindowEx)
GWL_ID
Возвращает идентификатор окна (он не имеет ничего общего с описателем окна!), задаваемый параметром hMenu для дочерних окон при вызове CreateWindow или CreateWindowEx

Обратите внимание: в случае, когда функция возвращает указатель, необходимо приведение типов (Integer -> Pointer). Делать это можно так:

...
var p : Pointer;
Begin
p:=PChar(GetWindowLong(wnd,GWL_WNDPROC));
//Делайте затем с p что хотите (если сможете...)
End;
...

Функция SetWindowLong

function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint;
Парная к функции GetWindowLong. Изменяет аттрибуты определенного окна.
Функция возвращает старое значение свойства, если вызов прошел удачно или нуль в противном случае.

hWnd
Описатель окна
nIndex
Константа, определяющая, какое свойство будет изменено. Должна быть одной из констант GWL_XXX из описания функции GetWindowLong
dwNewLong
Новое значение свойства, определяемого константой nIndex

Обратите внимание:при установке полей-указателей необходимо приведение типа Pointer к типу Integer.

...
var p : Pointer;
 l : Integer;
Begin
...
l:=SetWindowLong(wnd,GCL_WNDPROC,Integer(p));
//p - может быть и адресом любого объекта pr : @pr
End;
...

Функция GetDesktopWindow

function GetDesktopWindow: HWND
Функция возвращает описатель окна Рабочего Стола (Desktop). Без параметров.


GetParent

function GetParent(hWnd: HWND): HWND;
Возвращает описатель родительского окна для окна hWnd.

hWnd
Описатель окна

Получить ссылку на материал

Категория: WinAPI | Добавил: Барон (07.12.2011)
Просмотров: 7013 | Теги: Функця, окна, Win API | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования