Библиотека Интернет Индустрии I2R.ru |
|||
|
Delphi. Действия с посторонними окнами: Перемещение, изменение размеров, скрытие...Как "словить" окно? Под словом "словить" я имею ввиду то, как обнаружить наличие окна (любого окна) среди других окон. Функция "ловли окна" очень часто используется в том случае если вам необходимо совершить над ним (окном) какое-нибудь действие: закрыть, переместить, спрятать, изменить размеры и т.д. Еще раз скажу, что все эти действия будут совершаться над "чужими" окноми, т.е. не над теми которые ва разрабатываете, а над окнами других приложений. Итак вы уже поняли ( я надеюсь ) для чего нужно "словить" окно. Ниже представлен фрагмент кода, позволяющий определить наличие окна в системе:
Если вы поместите эту строчку в процедуру обработки события нажатия на кнопку (или в другое место ),запустите программу и нажмете на кнопку, ваша программа выдаст сообщение "Окно присутствует" если вы перед этим запустили блокнот и сохранили документ под названием 1.txt Иными словами программа смотрит есть ли окно с таким заголовком какой вы указали (он выделен вот таким цветом) и если оно есть - выдает сообщение, в противном же случае ничего не произойдет. Теперь когда, вы знаете как использовать функцию ловли окна, попробуем передвинуть его: //Поместите этот код в процедуру обработки события нажатия на кнопку if findwindow(nil, '1.txt - Блокнот') <>0
then Запустите Блокноти сохраните пустой(или не пустой) документ под именем 1.txt (Обратите внимание, что заголовок окна будет 1.txt - Блокнот) Теперь запустите программу и нажмите на кнопку. Если все сделано правильно, то окно блокнота передвинится в левый верхний угол экрана. Теперь давайте разберем, как вы это сделали. Первая строчка - функция "ловли" окна. Она проверяет есть ли окно с таким заголовком. Если есть, то выполняется следующая (вторая) строчка: SetWindowPos(findwindow(nil,'1.txt -
Блокнот'),HWND_BOTTOM,1,1,20,20,SWP_nosize); первый параметр - заголовок окна, с которым надо что-либо сделать ( в данном случае - передвинуть). Заголовок передается функцией "ловли" окна findwindow(nil,'1.txt - Блокнот') , где 1.txt - Блокнот заголовок окна Второй параметр - положение окно ( т.е. его Z-расположение ) он нам сейчас не нужен. Просто считайте, что он должен быть HWND_BOTTOM Третий параметр - координыты окна по "Оси X" в пикселах. Четвертый параметр - координыты окна по "Оси Y" в пикселах (т.е. этими координмтами вы указываете куда двигать окно). Пятый - размер окна по горизонтали Шестой - размер окна по вертикали И, наконец, седьмой параметр, он имеет несколько значений. Вот основные из них:
|