Вверх ↑
Этот топик читают: Гость
Ответов: 3
Рейтинг: 0
#1: 2009-09-08 21:58:40 ЛС | профиль | цитата
По поиску ответа не нашел. Это нормально, что у одного и того же элемента может быть разный handle (например, кнопки Пуск)? Хочу сделать штуку, которая, например, при наведении на кнопку Пуск запускала скринсейвер. Но получается что на каждом компе кнопка Пуск, а равно любой другой элемент имеют свой handle. Что делать? Может, есть другой способ получить имя элемента под курсором и по условию сделать действие?
карма: 0

0
Ответов: 205
Рейтинг: 44
#2: 2009-09-08 22:20:41 ЛС | профиль | цитата
Как-то так.
Проверить не магу т.к. под Win7 не работает.

code_14870.txt
карма: 0

0
файлы: 1code_14870.txt [1.5KB] [198]
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2009-09-09 10:59:35 ЛС | профиль | цитата
serenitatis писал(а):
Это нормально, что у одного и того же элемента может быть разный handle (например, кнопки Пуск)?

да

serenitatis писал(а):
Что делать?

искать окно по названию и имени класса
карма: 27
0
Ответов: 3
Рейтинг: 0
#4: 2009-09-10 20:59:13 ЛС | профиль | цитата
Спасибо за ответы. Я решил решать это дело с помощью координат
карма: 0

0
Ответов: 2271
Рейтинг: 677
#5: 2009-09-10 23:59:19 ЛС | профиль | цитата
serenitatis, не у всех кнопка пуск в нижнем левом углу.
карма: 11

0
Ответов: 3
Рейтинг: 0
#6: 2009-09-11 23:57:03 ЛС | профиль | цитата
Теперь речь идет просто об углу экрана, без привязки к чему-либо.
карма: 0

0
Ответов: 1397
Рейтинг: 50
#7: 2009-09-12 08:02:33 ЛС | профиль | цитата
А не проще найти окно "Пуск"? Как писал Dilma
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#8: 2009-09-12 12:38:29 ЛС | профиль | цитата
Валерий писал(а):
А не проще найти окно "Пуск"?

Как-то, вот так. Пример показывает нажатие клавиши Enter на Меню Пуск, и не важно, как оно будет называться


Add(MainForm,2953706,84,112)
{
}
Add(FindWindow,15534367,182,154)
{
ClassName="Button"
SkipParam=1
Point(ChildHandle)
link(onFind,14145821:doSendMessage,[])
}
Add(FindWindow,4511449,133,161)
{
ClassName="Shell_TrayWnd"
SkipParam=1
link(onFind,15534367:doFindChild,[])
}
Add(Button,12945645,77,168)
{
Left=30
Top=20
Width=110
Caption="Вход в Меню Пуск"
link(onClick,4511449:doFindChild,[])
}
Add(SendMessage,14145821,231,154)
{
Point(Message)
link(WParam,12300489:Var,[])
link(Message,3945192:Var,[])
}
Add(GlobalVar,3945192,252,105)
{
Name="WM_KEYDOWN"
Data=Integer(256)
}
Add(GlobalVar,12300489,238,126)
{
Name="VK_RETURN"
Data=Integer(13)
}

------------ Дoбавленo в 12.43:
А вот иммитация нажатия ЛКМ на Меню Пуск


Add(MainForm,2953706,77,112)
{
}
Add(FindWindow,15534367,182,154)
{
ClassName="Button"
SkipParam=1
Point(ChildHandle)
link(onFind,14145821:doSendMessage,[])
}
Add(FindWindow,4511449,133,161)
{
ClassName="Shell_TrayWnd"
SkipParam=1
link(onFind,15534367:doFindChild,[])
}
Add(Button,12945645,77,168)
{
Left=30
Top=20
Width=110
Caption="Вход в Меню Пуск"
link(onClick,4511449:doFindChild,[])
}
Add(SendMessage,14145821,231,154)
{
Point(Message)
link(Message,3945192:Var,[])
}
Add(GlobalVar,3945192,252,119)
{
Name="WM_LBUTTONDOWN"
Data=Integer(513)
}

карма: 22

0
Ответов: 1291
Рейтинг: 47
#9: 2013-10-10 16:07:43 ЛС | профиль | цитата
nesco, не заработал ваш вариант.
wss60, если вот так то у меня работает под 7-ку.

code_31987.txt
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1code_31987.txt [1.5KB] [323]
Разработчик
Ответов: 26163
Рейтинг: 2127
#10: 2013-10-10 16:33:11 ЛС | профиль | цитата
Aziz писал(а):
не заработал ваш вариант

Это под XP было
------------ Дoбавленo в 16.33:
Вот так будет работать под Win7

Add(MainForm,10753723,322,189)
{
}
Add(FindWindow,15534367,378,231)
{
ClassName="Button"
Caption="Пуск"
Point(ChildHandle)
link(onFind,14145821:doSendMessage,[])
}
Add(Button,12945645,322,231)
{
Left=30
Top=20
Width=110
Caption="Вход в Меню Пуск"
link(onClick,15534367:doFind,[])
}
Add(SendMessage,14145821,427,231)
{
Point(Message)
link(WParam,12300489:Var,[])
link(Message,3945192:Var,[])
}
Add(GlobalVar,3945192,448,182)
{
Name="WM_KEYDOWN"
Data=Integer(256)
}
Add(GlobalVar,12300489,434,203)
{
Name="VK_RETURN"
Data=Integer(13)
}


карма: 22

0
Ответов: 1291
Рейтинг: 47
#11: 2013-10-10 21:18:48 ЛС | профиль | цитата
Действительно работает, спасибо. Может еще подскажите, как определить что мышь находится над попап-окном пускового меню, не прибегая к названиям, которые в разной локализации могут отличаться? Нужно для моей проги которая постоянно себя поверх всех окон помещает, что мешает всплытию меню пуск. Надо соответственно определить что под мышью меню пуска и отключить попап.
------------ Дoбавленo в 21.18:
Я полагаю, нужно будет определить хендл трея и всех его потомков, после чего проверять хендл под курсором на предмет совпадения с потомками?
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#12: 2013-10-10 22:09:14 ЛС | профиль | цитата
Aziz писал(а):
Надо соответственно определить что под мышью меню пуска и отключить попап.

На тебе прогу WinInfo, она поможет тебе найти нужный класс -- wininfo_1011.sha
Можешь использовать оттуда перехватчик движения мыша

карма: 22

1
файлы: 1wininfo_1011.sha [4.6KB] [414]
Голосовали:foksov
Ответов: 1376
Рейтинг: 197
#13: 2013-10-10 22:34:30 ЛС | профиль | цитата
nesco, +2 позже, суточный лимит исчерпан
nesco писал(а):
перехватчик движения мыша
его давно, как бы, не хватало... Нельзя ли его встроить в MouseEvent? А то всё таймеры да таймеры применяем для регистрации движения мышки.
карма: 1

0
Ответов: 1291
Рейтинг: 47
#14: 2013-10-10 22:56:20 ЛС | профиль | цитата
nesco, спасибо.. У меня лимит + тоже исчерпан..
------------ Дoбавленo в 22.56:
Интересно, класс SysListView32 встречается только в меню старт? Если не только, то сложно будет идентифицировать..
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Разработчик
Ответов: 26163
Рейтинг: 2127
#15: 2013-10-10 23:57:21 ЛС | профиль | цитата
foksov писал(а):
Нельзя ли его встроить в MouseEvent?

Есть отдельный такой компонент, но он не штатный -- gmousehook_102.zip
карма: 22

1
файлы: 1gmousehook_102.zip [1.7KB] [237]
Голосовали:foksov
Сообщение
...
Прикрепленные файлы
(файлы не залиты)