Получить хэндлы элементов из окна IWebBrowser2 или IE

Тема в разделе "WASM.WIN32", создана пользователем serega28, 31 окт 2009.

  1. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Имеется страничка которая использует ActiveX объект (поле Edit и Button).
    Если какая-то возможность получить хэндлы Edit и Button?

    Через EnumChildWindows получается только следующие хэндлы:
    Shell DocObject View
    Internet Explorer_Server
     
  2. Gnil

    Gnil New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    41
    Activex на странице может быть windowless
     
  3. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Попробуйте посмотреть дерево окон тем же IngSof Window Scanner'ом.
    Затем по дереву окон FindWindow ->FindWindowEx ->....->FindWindowEx
     
  4. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Не.
    COM объекты ищутся через AccessibleObjectFromWindow.
    А всю информацию получаем об объекте с помощью AccessibleChildren.
    Хотя есть другой метод (не использовать AccessibleChildren) пока не знаю как.
     
  5. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    На вершине графической подсистемы винды находится gdi32 и user32. Винда построена на окнах ибо это Windows. Можно конечно контрол или окошко просто отрисовывать (gdi32) но это чушь.
     
  6. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    Кстати по задаче: получаем hwnd=InternetExplorer_Server затем подставляем свой оконный обработчик (SetWindowLong).
     
  7. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    serega28
    Нет. это не окна в привычном нам представлении. Это просто картинки в тексте. Хэндлов нет.
     
  8. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Какие картинки.
    Это ActiveX объект в котором и размещены всякие контролы.

    Всю нужную информацию по ним достал через IAccessible.
    Через WindowFromAccessibleObject получил хэндлы на контролы. GetClassName вернул их наименования.

    Но вот SendMessage им не посылаются.
    Где-то слышал что COM/DCOM объекты по другому поработают.

    Вот с помощью нелюбимого Delphi я получил какими методами пользуется объект:

    IAXNavigatePanelX = interface(IDispatch)
    ['{1958E643-A187-11D4-82B2-0000B4563778}']
    function Get_ShowLines: WordBool; safecall;
    procedure Set_ShowLines(Value: WordBool); safecall;
    .......

    Каким то образом мне это надо задействовать в своем проекте.
    И тогда через эти методы я и буду управлять контролом.
     
  9. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    serega28
    ActiveX объект имеет свой хэндл,аля hWnd, и найти его можно любым WindowScannerom,напимер от InqSoft.

    покажи хэндлы, хэндл родителя, классы.
     
  10. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Ну и толку от мне этих хендлов.
    Под номером 1 треевив куда мне надо попасть.
    Посылал по всем хэндлам SendMessage(..., TVM_GETNEXTITEM, TVGN_ROOT, 0). А ответа никакого.

    [​IMG]
     
  11. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Для работы с этим тривью тебе нужно находиться в адресном пространстве этого процесса. может и на самом деле можно через IAccesibleObject...
     
  12. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Ну так я всё получил.
    Эт в моей проге грузится эта страничка на каторой расположен этот АктивИкс, всё в моём пространтсве.
     
  13. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    100 раз предлагал посмотреть структуру InqSoft Window scanner'ом.
    Там есть сканер тулбаров.
     
  14. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Всё что сканер выдал, у меня это в проге один в один совпадает.
     
  15. Gnil

    Gnil New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    41
    С какого перепугу кастомное дерево "TRBTree" должно реагировать на сообщения TVM_xxx?
     
  16. serega28

    serega28 Member

    Публикаций:
    0
    Регистрация:
    26 мар 2007
    Сообщения:
    115
    Адрес:
    Minsk
    Просто так скриншот сделан.