Вверх ↑
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
#1: 2013-10-16 19:26:32 ЛС | профиль | цитата
Требуется скрыть активное окно сторонней программы. Любой. Игры, Автокада, Ворда, Блокнота, любое окно вобщем.
Вроде набросал схемку. Но столкнулся с 2 проблемами:
1. Скрывает почему-то не всё окно а только его часть. Т.е. допустим в Тотал Командере навожу курсор на панель с файлами, прям в центр панели. Жму Ф12 (она в проге забита для скрытия окон), и исчезает не весь Тотал, а только содержимое панели.
Я так понимаю курсор детектит именно составляющие части главного окна программы. Как передавать проге хэндл именно главного, основного окна?
2. Как потом "достать" то что скрыл? Пока тупо прибиваю Диспетчером задач.
Вот собственно схемка.
code_32044.txt
карма: 0

0
файлы: 1code_32044.txt [827B] [189]
Разработчик
Ответов: 26153
Рейтинг: 2127
#2: 2013-10-16 19:39:14 ЛС | профиль | цитата
Вот так попробуй, может пойдет

Add(MainForm,5661156,189,231)
{
link(onCreate,15740109:doTimer,[])
}
Add(Keyboard,5392458,329,245)
{
Key=123
link(onReadKey,13804330:doData,[])
}
Add(WinTools,5901,756,266)
{
Point(isVisible)
link(Handle,8415223:Value,[(762,257)(671,257)(671,306)(636,306)])
}
Add(Timer,15740109,252,245)
{
Interval=100
Point(onStop)
link(onTimer,5392458:doReadKey,[])
}
Add(IndexToChanel,10299207,427,245)
{
link(onEvent2,10643246:doSwitch,[])
}
Add(Switch,10643246,483,252)
{
DataOn=Integer(1)
DataOff=Integer(0)
Default=0
Point(State)
Point(onOn)
Point(onOff)
link(onOn,16141349:doWork1,[(522,265)(522,167)(732,167)])
link(onOff,9464665:doWinInfo,[])
}
Add(ChangeMon,13804330,378,245)
{
Data=Integer(0)
link(onData,10299207:doEvent,[])
}
Add(InfoTip,8893199,294,189)
{
Info=#11:Клавиша Ф12|
Width=85
Height=144
}
Add(MouseEvent,15206982,546,175)
{
Point(Handle)
}
Add(WinInfo,9464665,560,266)
{
Point(ParentHandle)
link(onWinInfo,8415223:doValue,[])
link(Handle,15206982:Handle,[])
}
Add(Memory,8415223,630,266)
{
Point(Data)
link(onData,12057608:doData,[])
link(Data,9464665:ParentHandle,[(636,257)(622,257)(622,306)(580,306)])
}
Add(HubEx,16141349,728,266)
{
link(onEvent,5901:doVisible,[])
}
Add(DoData,12057608,679,266)
{
Data=Integer(0)
link(onEventData,16141349:doWork2,[])
}

карма: 22

1
Голосовали:user_asm
Ответов: 9906
Рейтинг: 351
#3: 2013-10-16 21:15:32 ЛС | профиль | цитата
А чего парент извлекаешь не рекурсивно


------------ Дoбавленo в 21.15:
Чего я думаю, nesco...
Вместо обертки над GetParent, лучше было бы обертку над GetAncestor
Может быть в виде трех точек, с параметрами GA_PARENT, GA_ROOT, GA_ROOTOWNER - соответственно

карма: 9

0
Разработчик
Ответов: 26153
Рейтинг: 2127
#4: 2013-10-16 21:34:16 ЛС | профиль | цитата
Galkov писал(а):
А чего парент извлекаешь не рекурсивно

Тут я мысль не понял
Galkov писал(а):
Вместо обертки над GetParent, лучше было бы обертку над GetAncestor

Ты не мог бы набросать идею
карма: 22

0
Ответов: 9906
Рейтинг: 351
#5: 2013-10-16 21:57:33 ЛС | профиль | цитата
nesco писал(а):
Тут я мысль не понял

В твоей схеме ты используешь хэндл парента.
А у него есть свой парент, или нет?
И чего

nesco писал(а):
набросать идею

Какая нафиг идея

У тебя в коде элемента есть winApi GetParent? -- есть
Заменить его на GetAncestor -- на "идею" не очень то и тянет
карма: 9

0
5
Сообщение
...
Прикрепленные файлы
(файлы не залиты)