Как получить hwnd контрола, у которого его нет?

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

Как получить hwnd контрола, у которого его нет?

Сообщение Pantalone » 13.11.2006 (Пн) 12:27

OCX контрол MB Splitter как оказалось не имеет hwnd, т.е. обычным путем его не получить прямо с объекта, разработчик прошляпил видимо. Как можно получить hwnd сторонним путем?

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 13.11.2006 (Пн) 12:35

Как получить hwnd контрола, у которого его нет?
+1 :lol:
А у этого контрола хоть это wnd есть, h которого ты хочешь получить?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.11.2006 (Пн) 12:45

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 13.11.2006 (Пн) 13:20

А если этих контролов на форме несколько как взять хэндл конкретного?

_ae_
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 165
Зарегистрирован: 08.10.2006 (Вс) 14:37

Сообщение _ae_ » 13.11.2006 (Пн) 13:30

Размещай их в picturebox'ах.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.11.2006 (Пн) 13:30

перебором :)

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 13.11.2006 (Пн) 21:22

Только не FindWindow a FindWindowEx
Если всё делать своими ручками, они скоро отвалятся !

X-hacker
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 26.08.2006 (Сб) 1:22
Откуда: Moldova

Сообщение X-hacker » 18.11.2006 (Сб) 21:59

Ага, пытался еа смалл в спае(Small Spy) кликнуть на старт, потом на стоп, а для ентого решил класс узнать, навел сиплюплюйский спай, посмотреть в поле Class... И НИЧО ТАМ НЕТ!!!
(У "Image" тоже HWND узнать не получится, если он не на твоей форме)

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

Сообщение keks-n » 18.11.2006 (Сб) 22:27

Image не имеет окна. Это надстройка над API функциями и рисуется непосредственно в контейнере.
Изображение

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 20.11.2006 (Пн) 16:38

Pantalone
Опять вопросы типа "Записать в файл не открывая его"? До конца ли ты понимаешь, что есть hWnd?
А я все практикую лечение травами...

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 20.11.2006 (Пн) 22:02

Просто нужно взять и сделать конирол, бросить на него тот элемент, у которого нету hwnd, и контролу - приписать это свойство.
Просто до безобразия :)))))))))))) хотя может и неоригинально, но во всяком случае это работает в отличие от всего, что предлагалось выше
Человек рождён для того, чтобы достичь жизни...

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 20.11.2006 (Пн) 22:59

VB-constructor, это просто, но не всегда возможно. :)

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

Сообщение alibek » 21.11.2006 (Вт) 8:18

VB-constructor, не тормози. hWnd нужен не для того, чтобы просто был.
Lasciate ogni speranza, voi ch'entrate.

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 22.11.2006 (Ср) 14:57

VB-constructor, не тормози. hWnd нужен не для того, чтобы просто был.
Да, я собственно об этом не подумал:
Нужно будет продублировать все свойства этого контрола.
Но - работать будет!!!

С другой стороны как это FindWindow, если он возвращает hwnd. А если у контрола нет hwnd, то как - извините меня - вы его хотите получить???

Предварительно не создав?????

Конечно есть и другой вариант решения: поставить на этот контрол что-то вроде хука и создать для него hwnd программно.... (вряд ли автор это имел в виду)

А вообще на подобные вопросы ответ один: нет hwnd - значит его нет.
А реализация задачи может быть возможна и без hwnd
Человек рождён для того, чтобы достичь жизни...

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.11.2006 (Ср) 15:04

Конечно есть и другой вариант решения: поставить на этот контрол что-то вроде хука и создать для него hwnd программно.... (вряд ли автор это имел в виду)
Бредятина. :?
А вообще на подобные вопросы ответ один: нет hwnd - значит его нет.
А реализация задачи может быть возможна и без hwnd
Да блин, народ! Не поленитесь - откройте гугл и посмотрите, наконец, что такое hWnd... Или может статью написать? :?
А я все практикую лечение травами...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.11.2006 (Ср) 15:08

видимо статью придется таки тебе написать :D

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.11.2006 (Ср) 15:10

Ну про хэндлы уже есть две. Но та тема не была широко освещена в кругах VB-программистов. Но hWnd... :?
А я все практикую лечение травами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.11.2006 (Ср) 15:16

А че? и не на таких скромных темах диссертации защищали... Чем не тема "Что такое hWnd, откуда его взять, куда деть, и на кой оно вообще надо"... Тем более, что на соседнем форуме недавно целый топик перлов по поводу hWnd (а мож и по поводу hDC) сотворили
Весь мир матрица, а мы в нем потоки байтов!

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 22.11.2006 (Ср) 15:20

более, что на соседнем форуме недавно целый топик перлов по поводу hWnd (а мож и по поводу hDC) сотворили
Линк? Ща туда полезу... :)
А я все практикую лечение травами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.11.2006 (Ср) 15:45

Найти бы ссылку на конкретный топик... а так www.vbnet.ru в подфоруме Общий... Еще бы название топика вспомнить...
Последний раз редактировалось Viper 22.11.2006 (Ср) 19:05, всего редактировалось 1 раз.
Весь мир матрица, а мы в нем потоки байтов!

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 22.11.2006 (Ср) 18:26

Еще бы название топика вспомнить...
Эта?
Или может статью написать?
и Соответственно :D
А вообще на подобные вопросы ответ один: нет hwnd - значит его нет.
Возможно я был неправ
Человек рождён для того, чтобы достичь жизни...

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 22.11.2006 (Ср) 18:40

а мож и по поводу hDC
А вот с hDC сложнее. По нему статей я не нашел... (дескриптор окна, дескриптор окна... - везде). Самое большее что я понял - это то, что hwnd - это хэндл окна, а hdc - это указатель на него
Человек рождён для того, чтобы достичь жизни...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.11.2006 (Ср) 18:47

VB-constructor, во-первых, ты понял совсем не то, и во-вторых, статей полно. Учи английский.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 22.11.2006 (Ср) 19:04

Весь мир матрица, а мы в нем потоки байтов!

Pantalone
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 687
Зарегистрирован: 12.11.2005 (Сб) 16:46
Откуда: Сапог

Сообщение Pantalone » 22.11.2006 (Ср) 20:58

Развели тут.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 23.11.2006 (Чт) 13:47

что hwnd - это хэндл окна, а hdc - это указатель на него
Статьи... срочно читать статьи... :shock:

hWnd - это действительно хэндл окна, но по сути его значение является уникальным номером (который выдает сама система), а не битовой маской, как другие хэндлы. Теперь понимаешь, что то, у чего нет hWnd на самом деле не является окном и то, что просто так hWnd ни к чему не присобачить?

А вот hDC - это так называемый хэндл контекста устройства. С его помощью можно, к примеру, рисовать на окнах. hDC не глобален.

По повода топика с соседнего форума - куда катится мир? :lol: После фраз, типа "форма и окно отнюдь не одно и то же", "одним апишкам подавай hWnd, другим - hDC, не проще ли обойтись чем то одним?" возникает ощущение, что ни один из присутствующих там не написал за всю жизнь ни строчки кода... :?
А я все практикую лечение травами...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 23.11.2006 (Чт) 14:14

[OFFTOP]Нды... после периодического посещения соседнего топика мысли зачастую только грустные... Такую чушь порой несут пользователи с большим количеством "звезд на погонах"[/OFFTOP] :roll:
Весь мир матрица, а мы в нем потоки байтов!

VB-constructor
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 160
Зарегистрирован: 24.07.2006 (Пн) 21:37
Откуда: Ростов-на-Дону

Сообщение VB-constructor » 25.11.2006 (Сб) 14:22

Теперь понимаешь, что то, у чего нет hWnd на самом деле не является окном и то, что просто так hWnd ни к чему не присобачить?
Да, понял :!:
Человек рождён для того, чтобы достичь жизни...


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

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

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

    TopList