Клик на кнопке приложения в Панели задач

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

Клик на кнопке приложения в Панели задач

Сообщение Source » 03.11.2007 (Сб) 23:53

Можно отловить этот клик (надо различать клик на открытом окне и в Панели задач)?

Arcady_XQST
Обычный пользователь
Обычный пользователь
 
Сообщения: 85
Зарегистрирован: 17.09.2007 (Пн) 1:27
Откуда: Russia, Bryansk

Сообщение Arcady_XQST » 04.11.2007 (Вс) 1:32

Проверяй, над каким окном находится курсор с помощью API-функции GetWindowFromPoint.
Окно с классом "ToolbarWindow32" и заголовком "Выполнение приложений" - окно-список запущенных приложений с возможностью сворачивания. Если тебе нужна вся панель задач, то находи окно-владельца с классом "Shell_TrayWnd" через GetParent.
// тили-тили, трали-вали
if (jsLoaded) {
// это дело мне по силе, откажусь теперь едва ли
} else {
// это мы не проходили, это нам не задавали
}

BION
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 259
Зарегистрирован: 24.01.2005 (Пн) 21:05

Сообщение BION » 04.11.2007 (Вс) 8:11

А у меня вопрос в догонку.
Можно ли реализовать клик не привлекая для этих целей курсор мыши?
Я например сделал так, на долю сек. курсор перемещается в определённую точку и через mouse_event эмулирует нажатие мыши, а потом возвращается на исх. позицию. Но при этом теряется фокус с прежнего приложения и переходит в точку нажатия, а вернуть фокус прежнему окну нельзя, т.к. хэндл не выловишь как-то он там у них шифруется (игрушка).

Source
Постоялец
Постоялец
 
Сообщения: 351
Зарегистрирован: 04.09.2007 (Вт) 11:21

Сообщение Source » 04.11.2007 (Вс) 14:46

BION, перемещай мышь на прежнее окно и эмулируй нажатие мыши, желательно в точку, которая не активизирует некие действия в игрушке (например, заголовок окна). Или перед перемещением мыши в свою точку через API получай хендл активного окно в системе, наверняка такая API есть. И что за мода вставлять свои вопросы в чужие топики. Больше так не делай!

Arcady_XQST, спасибо, сейчас попробую.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 04.11.2007 (Вс) 21:09

А банально фокус запомнить(GetFocus) и вернуть(SetFocus) совсем никак? И вообще, если есть HWND нужного окна, то проще ему послать WM_LBUTTONDOWN, а потом WM_LBUTTONUP.
Изображение

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 05.11.2007 (Пн) 10:27

Может, автору нужно нечто вроде SHAppBarMessage?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


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

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

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

    TopList