Как можно определить в программе на хиасм Handle Рабочего стола ?
Редактировалось 1 раз(а), последний 2017-04-24 10:31:15
Этот топик читают: Гость
Ответов: 33
Рейтинг: 2
|
|||
карма: 0 |
|
Google
vip
|
#1.1контекстная реклама от партнеров
|
Ответов: 8888
Рейтинг: 823
|
|||
Dimka, "0"
Схемка
|
|||
карма: 19 |
|
Ответов: 33
Рейтинг: 2
|
|||
Леонид, ноль похоже не то, когда над раб столом мышка то ид под ней не ноль ...
в этой схемке у меня элемент GMouseHook если что.. Редактировалось 3 раз(а), последний 2017-04-24 14:16:10 |
|||
карма: 0 |
|
Ответов: 8888
Рейтинг: 823
|
|||
Dimka, если не рисовать, то вот это спасёт:
Окно под мышкой
|
|||
карма: 19 |
|
Ответов: 33
Рейтинг: 2
|
|||
Леонид, спасибо, но это не совсем то что я ищу, вобщем мне нужно захватить окно и выгрузить его обратно
захват - я имею ввиду переназначить с помощью элемента SetParent, а вот как вернуть его обратно ? я подумал что если знать ИД рабочего стола то с помощью того же SetParent вернуть окно обратно, но нужно чтоб программа нашла ИД сама, без мышки... Вот в схемке мая мысля будет понятнее Схемка Add(MainForm,2953706,224,168) { Width=500 Height=600 Point(Handle) } Add(WinExec,7740231,189,21) { FileName="notepad.exe" Point(ProcessID) } Add(Button,5465219,126,21) { Width=220 Height=40 Font=[MS Sans Serif,12,1,0,1] Caption="ЗАПУСТИТЬ БЛОКНОТ" link(onClick,7740231:doExec,[]) } Add(Button,5364659,42,105) { Top=50 Width=220 Height=40 Font=[MS Sans Serif,12,1,0,1] Caption="ПОИСК ОКНА" link(onClick,15887338:doFind,[]) } Add(SetParent,2960829,189,273) { Point(ParentHandle) link(onSetParent,3909455:doEvent1,[]) link(Handle,11255131:Var2,[]) link(NewParent,2953706:Handle,[(202,219)(230,219)]) } Add(Label,7105723,315,105) { Left=240 Top=60 Width=200 Height=20 Font=[MS Sans Serif,10,1,0,1] Caption="ИД ОКНА" AutoSize=1 } Add(FindWindow,15887338,112,105) { Caption="Безымянный — Блокнот" SkipParam=2 link(onFind,1896593:doValue,[]) } Add(StrCat,11001252,252,105) { Str1="ИД ОКНА - " link(onStrCat,7105723:doText,[]) link(Str2,15887338:Handle,[(265,93)(160,93)(160,149)(118,149)]) } Add(Button,13227139,119,273) { Top=100 Width=220 Height=40 Font=[MS Sans Serif,12,1,0,1] Caption="ЗАХВАТ ОКНА" link(onClick,2960829:doSetParent,[]) } Add(Memory,1896593,189,105) { link(onData,11001252:doStrCat,[]) } Add(PosWindow,12362078,287,273) { link(Handle,8785889:Var2,[]) } Add(Hub,3909455,245,273) { OutCount=4 link(onEvent1,12362078:doLeft,[]) link(onEvent2,12362078:doTop,[]) link(onEvent3,11821619:doWidth,[]) link(onEvent4,11821619:doHeight,[]) } Add(SizeWindow,11821619,350,287) { Width=400 Height=500 link(Handle,8785889:Var3,[(356,243)]) } Add(GetDataEx,11255131,189,238) { link(Data,1896593:Value,[]) } Add(GetDataEx,8785889,287,238) { Angle=3 link(Data,11255131:Var3,[]) } Add(Button,5216612,59,354) { Top=150 Width=340 Height=40 Font=[MS Sans Serif,12,1,0,1] Caption="КАК ВЫГРУЗИТЬ ОКНО ОБРАТНО ??" } |
|||
карма: 0 |
|
Разработчик
Ответов: 26066
Рейтинг: 2120
|
|||
Dimka писал(а): но нужно чтоб программа нашла ИД сама, без мышки... Для компонента SetParent искать предыдущего родителя совсем не надо, он сохраняет Handlе предыдущего родителя, и его можно получить на точке OldParent. Схема
По схеме -- искать окно лучше всего по классу, а не по заголовку. Для блокнота этот класс Notepad Редактировалось 2 раз(а), последний 2017-04-24 18:09:58 |
|||
карма: 22 |
|
Ответов: 33
Рейтинг: 2
|
|||
nesco, понятно, спасибо!
nesco писал(а): По схеме -- искать окно лучше всего по классу, а не по заголовку. Для блокнота этот класс Notepadа если мне нужно найти один из нескольких установленных браузеров - тоже лучше по классу искать или не получится ? ещё вопросик можно ли хэндл найти сразу из точки процесс ИД компонента WinExec после запуска этого процесса ? Редактировалось 1 раз(а), последний 2017-04-24 19:39:28 |
|||
карма: 0 |
|
Разработчик
Ответов: 26066
Рейтинг: 2120
|
|||
Dimka писал(а): а если мне нужно найти один из нескольких установленных браузеровУ каждого браузера свой класс главного окна Вот такой схемкой можно посмотреть классы окон и еще некоторую полезную инфу WinInfo
Редактировалось 1 раз(а), последний 2017-04-24 19:46:27 |
|||
карма: 22 |
|
Ответов: 33
Рейтинг: 2
|
|||
nesco, а можно узнать хэндл по ИД процесса после запуска программы с помощью WinExec ?
> |
|||
карма: 0 |
|
Разработчик
Ответов: 26066
Рейтинг: 2120
|
|||
Dimka писал(а): а можно узнать хэндл по ИД процесса после запуска программы с помощью WinExec ? Напрямую -- нет, нельзя, только перебором всех хандлов, получением их ID и сравнением с нужным тебе. --- Добавлено в 2017-04-24 23:45:07 Да, учти еще и то, что у процесса может быть несколько окон --- Добавлено в 2017-04-24 23:51:22 Вот реализация того, о чем я говорил Схема
Редактировалось 4 раз(а), последний 2017-04-24 23:52:15 |
|||
карма: 22 |
|
Ответов: 33
Рейтинг: 2
|
|||
nesco, понятно, спасибо за помощь !
|
|||
карма: 0 |
|
Ответов: 497
Рейтинг: 16
|
|||
Дабы не создавать тему спрошу здесь. кто то смог рисовать на рабочем столе под иконками(для избежания мерцаний от перерисовки) ? попытки сделать вживление своей формы (Франкенштейна) ничем толковым не закончились.
--- Добавлено в 2017-05-01 19:17:46 Я и брал иконки на свою форму но тогда фон их не прозрачный да и перетаскивание не работало. И внедрял свою форму под иконки(+ иконкам режим "поплавок" включал) но моя форма всегда почему-то сверху. Редактировалось 1 раз(а), последний 2017-05-01 19:17:46 |
|||
карма: 1 |
|
Ответов: 165
Рейтинг: 6
|
|||
RAWY_EX, лет 7-8 назад здесь был пример плеера, который воспроизводил видео на рабочем столе под иконками, но спустя несколько лет и уже в другом Windows (с тем же компонентом), эта схема создавала собственное окно и воспроизводила видео в нём. Тоже хотелось бы сейчас найти рабочее решение.
|
|||
карма: 4 |
|
Ответов: 8888
Рейтинг: 823
|
|||
RAWY_EX, чтобы не искать приложил, поможет? http://forum.hiasm.com/getfile/38101
|
|||
карма: 19 |
|
14