none
new-object -com RRS feed

  • Вопрос

  • Доброго времени суток.

    Имеется dll. Пробую загрузить её 

    [Reflection.Assembly]::LoadFile('C:\trash\DrvFR.dll')
    Получаю ошибку
    Исключение при вызове "LoadFile" с "1" аргументами: "Ожидалось, что модуль содержит манифест сборки. (Исключение из HRESULT: 0x80131018)"
    строка:1 знак:1
    

    Создаю объект

    $FRDriver = New-Object -ComObject C:\trash\DrvFR.dll

    Получаю ошибку

    New-Object : Не удалось получить фабрику класса COM для компонента с CLSID {00000000-0000-0000-0000-000000000000} из-за следующей ошибки: 80040154 Класс не зарег
    истрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
    Подскажите пожалуйста, что я делаю не правильно?

Ответы

  • 1) regsvr32 DrvFR.dll          

    2) Для вызова ComObject

    New-Object -ComObject AddIn.DrvFR1C

    New-Object -ComObject AddIn.DrvFR

    • Помечено в качестве ответа esqado 9 мая 2013 г. 10:25
    Отвечающий
  • На win8 не получилось. 

    New-Object : Не удалось получить фабрику класса COM для компонента с CLSID {E187099F-8C5C-4723-8866-D8DBB6353ADE} из-за следующей ошибки: 80040154 Класс не зарег
    истрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    На winXP - получилось.

    Откуда вы узнали про "AddIn.DrvFR1C"?  

    На сайте производителя - ftp://ftp.shtrih-m.ru/download/FR/Doc/DriverFR_%20specification_1C.pdf

    При подключении драйвера в 1С:Предприятии в качестве параметра «Идентификатор объекта» в методе «ПодключитьВнешнююКомпоненту» необходимо использовать строку «AddIn.DrvFR1C».

    Уточнить у производителя возможность работы под Windows 8.

    PS. Если Windows 8 x64,то попробовать запустить  "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" и выполнить команду.

    • Помечено в качестве ответа esqado 11 мая 2013 г. 7:45
    Отвечающий

Все ответы

  • 1) regsvr32 DrvFR.dll          

    2) Для вызова ComObject

    New-Object -ComObject AddIn.DrvFR1C

    New-Object -ComObject AddIn.DrvFR

    • Помечено в качестве ответа esqado 9 мая 2013 г. 10:25
    Отвечающий
  • На win8 не получилось. 

    New-Object : Не удалось получить фабрику класса COM для компонента с CLSID {E187099F-8C5C-4723-8866-D8DBB6353ADE} из-за следующей ошибки: 80040154 Класс не зарег
    истрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
    

    На winXP - получилось.

    Откуда вы узнали про "AddIn.DrvFR1C"?  

  • На win8 не получилось. 

    New-Object : Не удалось получить фабрику класса COM для компонента с CLSID {E187099F-8C5C-4723-8866-D8DBB6353ADE} из-за следующей ошибки: 80040154 Класс не зарег
    истрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

    На winXP - получилось.

    Откуда вы узнали про "AddIn.DrvFR1C"?  

    На сайте производителя - ftp://ftp.shtrih-m.ru/download/FR/Doc/DriverFR_%20specification_1C.pdf

    При подключении драйвера в 1С:Предприятии в качестве параметра «Идентификатор объекта» в методе «ПодключитьВнешнююКомпоненту» необходимо использовать строку «AddIn.DrvFR1C».

    Уточнить у производителя возможность работы под Windows 8.

    PS. Если Windows 8 x64,то попробовать запустить  "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" и выполнить команду.

    • Помечено в качестве ответа esqado 11 мая 2013 г. 7:45
    Отвечающий
  • На сайте производителя - ftp://ftp.shtrih-m.ru/download/FR/Doc/DriverFR_%20specification_1C.pdf

    Смотрел другое руководство. 

    Уточнить у производителя возможность работы под Windows 8.

    В win8 дома пробую. Работает на winXP embedded. Работает нормально. 

    PS. Если Windows 8 x64,то попробовать запустить  "C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe" и выполнить команду.

    Получилось. Спасибо.

  • Дабы не создавать новую тему

    Зарегистрировал библиотечку. Появились СОМ-объекты. 

    Для загрузки использую такой код (взято из инструкции для библиотечки):

    $mgr = New-Object -ComObject XID_DesignerLib.XID_Manager
    $devs = New-Object -ComObject XID_DesignerLib.XID_DevicesList
    $cx = New-Object -ComObject XID_DesignerLib.XID_ControlX
    
    $mgr.DetectDevices()
    $mgr.GetDevices($devs)

    Изначально код для VB. 

    Далее идёт код в VB:

    Dim ss As New String("")
    If devs.DevicesCount > 0 Then
        MsgBox(devs.DevicesCount, MsgBoxStyle.OkOnly, "Found readers")
        ss = devs.Devices(0).Model
    End If

    На VB никогда не писал.

    Догадываюсь, что переменная "ss" должна содержать некую строку, означающую модель устройств(а), а "Devices" и "Model" - это некие свойства объекта "devs".

    Вот только на PoSh у меня не получается так сделать. 

    PS C:\User> $devs
    
    Port              : 0
    ID                : 5AD4C999
    BSA               : 0
    Model             : UEM_I_U 
    Version           : 30FFFF0F0449
    Vendor            : MicroEM
    CommBaudRate      : 0
    CommunicationType : 32
    Object            : System.__ComObject
    DeviceClass       : 1
    IP                : 
    LibraryIndex      : 0

    Следовательно, если спросить, какие объекты есть у $devs - будет выведен список таких объектов.

    PS C:\User> $devs | gm
    
       TypeName: System.__ComObject#{50db65c1-c21a-42f6-b522-bfe4aac275da}
    
    Name              MemberType            Definition                             
    ----              ----------            ----------                             
    CloneFrom         Method                void CloneFrom (IXID_Device)           
    IsEqualTo         ParameterizedProperty bool IsEqualTo (IXID_Device) {get}     
    BSA               Property              byte BSA () {get} {set}                
    CommBaudRate      Property              XID_eCommBaudRate CommBaudRate () {g...
    CommunicationType Property              XID_eCommunicationType Communication...
    DeviceClass       Property              XID_eDeviceClass DeviceClass () {get...
    ID                Property              string ID () {get} {set}               
    IP                Property              string IP () {get} {set}               
    LibraryIndex      Property              short LibraryIndex () {get}            
    Model             Property              string Model () {get} {set}            
    Object            Property              IXID_Device Object () {get} {set}      
    Port              Property              short Port () {get} {set}              
    Vendor            Property              string Vendor () {get} {set}           
    Version           Property              string Version () {get} {set}          
    

    Но если написать $devs.Model - вывод будет пустой. И свойства "Devices" в списке нет. 

    Подскажите пожалуйста, в чём я ошибаюсь? Как получить этот Model?

    3 октября 2013 г. 12:57
  • Вот почему, когда вопрос уже задан - ответ находится сам...

    $devs.item(0).model

    Думается мне, что число "0" в параметрах "item" означает первое устройство.

    3 октября 2013 г. 13:14