Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить идентификатор окна кнопки


turonix ©   (2002-10-17 13:01:00) 

Как получить идентификатор окна кнопки "Пуск" и "taskbar"


turonix   (2002-10-17 23:37:00) [1]

я реализовал программу следующим образом:

var
Wnd:hWnd;

begin
Wnd := FindWindow("Shell_TrayWnd", nil);
Wnd := FindWindowEx(Wnd, HWND(0),"Button", nil);
ShowWindow(Wnd, SW_show);
//ShowWindow(Wnd, SW_hide);


end.


ОДНАКО я не понимаю двух вещей! Когда программу гонишь по шагам
она не работает: не хочет прятать кнопку, при этом если ее запустить (хотя бы F9) то все нормально. Еще когда ее гонишь по шагам то значения Wnd равно 0 ,а это значит, что идентификатор окна не найден ???? что за бред???

Вообще я хочу заставить это кнопку прыгать по экрану. Но пока данный код работать не хочет, кнопка только пропадает, а изменять свои координаты не хочет.

var
StartButtonWnd,StartButtonBmp:THandle;
i,l,h:integer;
WRct:TRect;
MWStruct:HDWP;
w:THandle;
begin
StartButtonWnd:=FindWindow("Shell_TrayWnd", nil); //получили идентификатор окна панели задач
StartButtonBmp:=FindWindowEx(StartButtonWnd,HWND(0),"Button", nil); //получили идентификатор кнопки "Пуск"


MWStruct:=BeginDeferWindowPos(1); /указываем количество окон которые собираемся двигать
l:=3;h:=3;
if Pointer(MWStruct)<>nil then
begin
while (true) do
begin
GetWindowRect(THandle(StartButtonBmp),WRct); //считывает размеры передвигаемого окна и помещает в WRct
MWStruct:=DeferWindowPos(MWStruct,THandle(StartButtonBmp),HWND_BOTTOM,
WRct.Left+i,WRct.Top,WRct.Right-WRct.Left,
WRct.Bottom-WRct.Top,SWP_NOACTIVATE or SWP_NOZORDER); //задаем новые координаты окна
if WRct.Top<0 then h:=-3;
if WRct.Top>743 then h:=3;
if WRct.left<1 then l:=3;
if WRct.left>968 then l:=-3;

EndDeferWindowPos(MWStruct); //производим сдвиг

//создание пауз
w:=CreateEvent(nil,true,false,"");
WaitForSingleObject(w,10000);
//CloseHandle(w);
end;
end;
//CloseHandle(w);




end.


Song   (2002-10-17 14:25:00) [2]

Волшебное слово Shell_TrayWnd


Rustam_Katana   (2002-10-17 13:21:00) [3]

Точно не помню, но было можно получить handle через
FindWindow("здесь не помню слово волшебное было","") и все, потом работаешь, как с обычным окном...
Поищу, если найду, то скину


Игорь Шевченко   (2002-10-17 13:19:00) [4]

FindWindow


Наверх

Титульная страница Поиск, карта сайта Написать письмо