Помогите разобраться с ActiveX-контролом для эксплорера.
В C# работает до вызова ExcuteCmdAsyn на котором всё валится в AccessViolation. Подозреваю именно из-за отсутствия нужного делегата
Может быть ты CoInitializeEx вызываешь с другими параметрами, не такими, как это делает IE?
А почему не попытаться траффик между контролом и регистратором отследить?
Можно попробовать как-нибудь вклинится в процедуру позднего связывания, через которую идут вызовы. Но для этого потребуется IE под отладчиком запустить.
Паллиативное решение не подходит? В приложение вставить embedded IE, а в него вставить activeX?
В C# работает до вызова ExcuteCmdAsyn на котором всё валится в AccessViolation. Подозреваю именно из-за отсутствия нужного делегатаПредполагаю, что валится всё из-за того, что control хочет какой-нибудь специфический host-интерфейс, который поддерживается IE, но не поддерживается .net-формой.
Решение: делать свой Ole-hosting.
Решение: делать свой Ole-hosting.Поясни.
На с++ писать вот эти все CoCreateInstance?
а на шарпе вручную позвать его можно?
обёрткой в виде AxHost? ну так оно им же в шарп и тянется.
На с++ писать вот эти все CoCreateInstance?OLE-контейнер делается на C#. На смеси PInvoke, Marshal-а и переобъявлении com-овских интерфейсов.
можно положить в c:\windows\system32\webclientПочему надо класть именно в эту папку?
Имхо, стоит тогда использовать Embedded IE и не заморачиваться.
Траффик? Какой ещё траффик? (jump-ы? )
встраивается на вебморду видеорегистратора для доступа к накопленным видеоЯ из этого предположил, что контрол потом с видеорегистратора как-то скачивает или стримит видео. Если так, не понятно, что мешает их скачивать/стримить без контрола.
какие-то блобы передаются
wireshark внятного ничего не показал.А в начале нет инициализации передачи по RTSP?
какие-то блобы передаются
Скинь дамп начала передачи видео.
Оставить комментарий
yolki
предыдущая уехала в архивДиспозиция: есть китайский activex контрол (npwebclient.dll). встраивается на вебморду видеорегистратора для доступа к накопленным видео.
работает в IE и в некоторых версиях хрома (проверена на 36 portable).
в IE используется механизм встраивания через ActiveX, в хроме - NPAPI (привет нетскейпу).
Задача: Оторвать этот плагин от эксплорера и встроить в C#-приложение для автоматизации выкачивания отснятого видео.
Что имеем:
судя по реверсу js происходит примерно следующее (WebClient - это контрол, содержащий этот самый ActiveX):
SetNofityCallback устанавливает некий глобальный обработчик, который каким-то образом вызывается из WebClient.
Когда я этот самый WebClient пытаюсь использовать в C# приложении у меня нет возможности донести до него мои колбэки.
У него в tlb есть какой-то WebClientEvents, который даже помечен в coclass-е как source:
Однако там пусто, мне не на что делегатов повесить.
и формат делегатов я не знаю (но могу догадаться из js).
Судя по исходникам js оно хочет минимум 4 делегата:
Но эти делегаты устанавливаются явно только в случае использования яблок.
Не понятно, как их задать при использовании в C# приложении.
файл:
если не боитесь его запускать, можно положить в c:\windows\system32\webclient и позвать regsvr32 на него.
на 64-битной системе его нужно класть в C:\Windows\SysWOW64\webclient\
исходники js/html, на которые можно посмотреть: