Как получить хендл окна на котором стоит курсор?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Как получить хендл окна на котором стоит курсор?

Сообщение DeMONiZ » 13.05.2009 (Ср) 20:27

Задача такова: зная позицию курсора на экране (x,y) нужно определить хендл того элемента над которым(на котором) стоит курсор.
Как это реализовать? Получить кординату курсора это просто а вот по ним вычислить хендл.......

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как получить хендл окна на котором стоит курсор?

Сообщение alibek » 13.05.2009 (Ср) 20:35

WindowFromPoint
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как получить хендл окна на котором стоит курсор?

Сообщение Хакер » 13.05.2009 (Ср) 20:35

WindowFromPoint.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как получить хендл окна на котором стоит курсор?

Сообщение DeMONiZ » 13.05.2009 (Ср) 20:59

Спасибо сделал! а клик по хендлу как организовать?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как получить хендл окна на котором стоит курсор?

Сообщение iGrok » 13.05.2009 (Ср) 21:07

DeMONiZ писал(а):Спасибо сделал! а клик по хендлу как организовать?

В смысле, клик? Нажатие на кнопку? Нажатие на форму? Или что?

Клик по кординатам делается mouse_event.
Клик по окну.. Ну наверное SendMessage WM_MOUSEDOWN, WM_MOUSEUP, WM_CLICK...
label:
cli
jmp label

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Как получить хендл окна на котором стоит курсор?

Сообщение alibek » 13.05.2009 (Ср) 21:08

DeMONiZ писал(а):а клик по хендлу как организовать?

В этом предложении отсутствует смысл.
Lasciate ogni speranza, voi ch'entrate.

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как получить хендл окна на котором стоит курсор?

Сообщение awl100Alex » 13.05.2009 (Ср) 21:11

Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const BM_CLICK = &HF5

Private Sub Command1_Click()
Call SendMessage(Найденный_Хэндл, BM_CLICK, 0, ByVal 0)
End Sub
Последний раз редактировалось awl100Alex 13.05.2009 (Ср) 23:54, всего редактировалось 2 раз(а).

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как получить хендл окна на котором стоит курсор?

Сообщение DeMONiZ » 13.05.2009 (Ср) 21:13

Допустим есть программа на ней кнопка я получаю хендл этой кнопки и организовываю клик по кнопке с этим хендлом.......если это конечно возможно.

DeMONiZ
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 162
Зарегистрирован: 03.01.2009 (Сб) 18:32

Re: Как получить хендл окна на котором стоит курсор?

Сообщение DeMONiZ » 13.05.2009 (Ср) 21:15

awl100Alex спасибо! То что нужно!

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: Как получить хендл окна на котором стоит курсор?

Сообщение arvitaly » 13.05.2009 (Ср) 22:30

BM_CLICK он вроде именно для кнопок типа Button, для других элементов другие сообщения

awl100Alex
Постоялец
Постоялец
 
Сообщения: 355
Зарегистрирован: 29.01.2008 (Вт) 15:19
Откуда: Украина

Re: Как получить хендл окна на котором стоит курсор?

Сообщение awl100Alex » 13.05.2009 (Ср) 23:51

arvitaly писал(а):BM_CLICK он вроде именно для кнопок типа Button, для других элементов другие сообщения

Так о Button речь и шла. :)

Если надо другим элементам левый клик передать, то можно так...
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Const WM_LBUTTONDOWN = &H201
Const WM_LBUTTONUP = &H202

Private Sub Command1_Click()
'Посылаем левый CLICK другим объектам...
Call SendMessage(Найденный_Хэндл, WM_LBUTTONDOWN, 0, ByVal 0)
Call SendMessage(Найденный_Хэндл, WM_LBUTTONUP, 0, ByVal 0)
End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 56

    TopList