Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
19.04.2024, 19:21:50

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Как узнать дескриптор окна ListBox-a?
Страниц: [1]   Вниз
Печать
Автор Тема: Как узнать дескриптор окна ListBox-a?  (Прочитано 4710 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« : 12.07.2020, 14:00:51 »

Вопрос в названии темы.
Записан

Win10x64, MSO 2016
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #1 : 12.07.2020, 14:49:07 »

Что подразумевается? Индекс?
Проблему нужно описывать в сообщении, чтобы понятно было, что это и для чего это нужно. Тогда и помощь эффективнее.
Записан
Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« Ответ #2 : 12.07.2020, 15:29:02 »

По-моему, вопрос задал чётко и однозначно.
Не нравится дескриптор - пусть будет hwnd ListBox-а.
Записан

Win10x64, MSO 2016
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #3 : 12.07.2020, 15:55:18 »

Пусть будет, Вам же надо... Только где Вы видели окно  ListBox-а и какое отношение это имеет к тематике этой ветки форума?
На лист можно вставить  (внедрить) элемент ActiveX, элемент управления формы. ListBox может быть размещен на UserForm. Но это не окна.
« Последнее редактирование: 12.07.2020, 15:58:27 от vikttur » Записан
Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« Ответ #4 : 12.07.2020, 18:27:02 »

ListBox может быть размещен на UserForm. Но это не окна.
А что же в таком случае показывает Spy++ при выборе ListBox-а или другого элемента (TextBox, RefEdit ...)  на той же UserForm?
Записан

Win10x64, MSO 2016
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #5 : 12.07.2020, 19:06:42 »

Но это не окна
Окна, окна...В Windows все окна, даже кнопки. Просто тип у каждого окна свой и ищется через FindWindow и прочие функции API для работы с этими окнами.
Muskin2029, а зачем Вам hwnd ListBox-a? Может есть путь проще? Дело в том, что в 64-битных системах даже после того как найдете дескриптор не факт, что сможете нужные действия над окном сделать.
Найти-то не сложно:
Код: (vb)
Private Declare PtrSafe Function GetFocus Lib "user32" () As LongPtr

Private Sub CommandButton1_Click()
    Dim hwnd
    ListBox1.SetFocus
    hwnd = GetFocus
    MsgBox hwnd
End Sub
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #6 : 12.07.2020, 19:10:37 »

Вы на форуме по Excel и задачу следует описывать так, чтобы была понятна посетителям этого форума.

Возможно, я чего-то непонимаю, но пока вижу, что Вам нужно получить какое-то уникальное значение (слово, ключ, числ, индекс), которое укажет на конкретный элемент и называете это значение "дескриптор окна", хотя это, насколько понимаю, уровень системы, а не приложения.
Вот поэтому и предагал сразу - описать нормально, что нужно и для чего.

На UserForm каждый ее элемент имеет порядковый индекс. Может, это Вам нужно?

« Последнее редактирование: 12.07.2020, 19:12:56 от vikttur » Записан
Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« Ответ #7 : 12.07.2020, 20:07:51 »

Muskin2029, а зачем Вам hwnd ListBox-a? Может есть путь проще?
Хочу в ListBox-e отобразить горизонтальный ScrollBar.
Dim hwnd  
    ListBox1.SetFocus  
    hwnd = GetFocus  
    MsgBox hwnd
Пример знакомый, но что показывает hwnd я не соображу -> Spy++ показывает правильное значение.
Записан

Win10x64, MSO 2016
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #8 : 12.07.2020, 20:10:29 »

но что показывает hwnd я не соображу
пока не скажете зачем - никто не сообразит Улыбка и откуда уверенность, что Spy показывает нужное значение? Может Spy показывает не само родительское окно ListBox, а элементы в нем?
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
vikttur
Глобальный модератор
Ветеран
*****

Репутация: +124/-0
Офлайн Офлайн

Сообщений: 1 816



Просмотр профиля
« Ответ #9 : 12.07.2020, 20:29:33 »

В Windows все окна, даже кнопки.
Спасибо, буду знать.

Off
Цитировать
пока не скажете зачем - никто не сообразит
Получить, вставить в фотошоп,  красиво оформить. распечатать, поместить в рамку и над рабочим столом повесить.
Потом подкатить к приглянувшейся девушке в отделе: "Ты еще не видела мой дескриптор! Пошли в кабинет, покажу" Улыбка

Записан
Muskin2029
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 28


Просмотр профиля
« Ответ #10 : 12.07.2020, 20:38:22 »

пока не скажете зачем - никто не сообразит
Так я выше уже сказал - в ListBox-e отобразить горизонтальный ScrollBar, с помощью SendMessage.
и откуда уверенность, что Spy показывает нужное значение?
Уверен на сто - проверял другими софтами.
« Последнее редактирование: 12.07.2020, 20:45:16 от Muskin2029 » Записан

Win10x64, MSO 2016
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #11 : 13.07.2020, 11:11:44 »

отобразить горизонтальный ScrollBar
жуть какая...А что мешает сделать ширину столбца листбокса заведомо шире, чем сам листбокс? Тогда горизонтальный скроллбар появится сам как только в нем будет хоть один элемент...
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru