Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дочерние элементы ActiveX 
:(
    Опции темы
ecspertiza
Дата 4.5.2015, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: нет
Всего: 5



Добрый день. Пишу на C# небольшое приложение. Появилась необходимость разместить на форме ActiveX компонент, назовем его Filter. Он в свою очередь содержит в себе еще много элементов, В том числе элемент Report. Report имеет необходимый мне функционал, например, может испускать сигналы при клике на его итеме и еще много всего. Мне необходимо получить доступ к этому элементу Report. 

Для начала я просто попробовал получить число дочерних элементов у Filter

Код

ReportFilter.Controls.Count


их оказало 0

Я решил получить все Handle этого компонета с помоью WinApi

Код


        private bool GetWindowHandle(IntPtr windowHandle, ArrayList windowHandles)
        {
            windowHandles.Add(windowHandle);
            return true;
        }

        private ArrayList GetAllWindows()
        {
            var windowHandles = new ArrayList();
            EnumedWindow callBackPtr = GetWindowHandle;

            EnumChildWindows(ReportFilter.Handle, callBackPtr, windowHandles);

            return windowHandles;
        }

            ArrayList arr = GetAllWindows();

            for (int i = 0; i < arr.Count; ++i)
            {
                StringBuilder title = new StringBuilder(256);
                GetWindowText((IntPtr)arr[i], title, 256);

                StringBuilder ClassName = new StringBuilder(256);
                GetClassName((IntPtr)arr[i], ClassName, ClassName.Capacity);

                if (!String.IsNullOrEmpty(ClassName.ToString()))
                {
                    Console.WriteLine(ClassName + " " + title + " " + ((IntPtr)arr[i]).GetHashCode());
                }
            }


Список Handle я получаю, в нем содержится много всего и Label-ы и Button-ы и дочерние ActiveX компонеты, это видно по ClassName. Но получить доступ к ним, у меня так и не получилось, например пробовал так

Код

Button b = (Button)Button.FromHandle(hwnd);
 

Возникает вопрос, как получить доступ к дочерним компонентам ActiveX? Конкретнее хотелось бы получить доступы к событиям, что бы повесить на них свои хуки.

Добавлено через 6 минут и 58 секунд
Или даже так. У меня на форме есть ActiveX у него внутри есть дочерний ActiveX со своим GUID, могу ли ч получить дочерний компонент по GUID?


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0699 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.