当前位置: 代码迷 >> C# >> C#使用COM解决思路
  详细解决方案

C#使用COM解决思路

热度:99   发布时间:2016-05-05 04:56:41.0
C#使用COM
有一个数据采集设备,设备驱动提供了一个COM接口。现在要使用C#来处理。
引用
The Device Driver Interface is a COM interface that allows communication between hardware and PC applications.

引用
There are two interfaces to talk to, the Device interface (ICmpDevice), and the individual Channel interface (IDeviceChannel).
Device wide properties and methods (data, configuration) are accessed through ICmpDevice, while individual channel settings (sample rate, gains) are access through the IDeviceChannel.

有一个dll文件,使用regsvr32注册成功了
该如何使用这接口呢?

这样?
class Device:ICmpDevice{}

还是这样?
class Device
{
    CmpDeviceClass device = new CmpDeviceClass();
    // 但是这样会出现  
    //从 IClassFactory 为 CLSID 为 {7D7A2584-140B-4686-8D8E-FDEAE49130C2}
    // 的 COM 组件创建实例失败,
    //原因是出现以下错误: 80070005 拒绝访问。 
    //(异常来自 HRESULT:0x80070005 (E_ACCESSDENIED))。 
    //的错误
}

------解决思路----------------------
工程需要引用该com的dll
------解决思路----------------------
你使用C++/Cli封装下,给C#客户使用.Com对象的创建一般使用CoCreateInstance或者是类库提供的专门的创建函数
------解决思路----------------------
给设备厂家技术支持打电话,要demo
什么都不告诉,光给个sdk,鬼知道该怎么用
------解决思路----------------------
用tlbimp这个工具试试, 它可以把COM自动翻译成.Net程序集
tlbimp [com dll 文件]  /out:[输出文件]   //注意实际写时没有[]括号
------解决思路----------------------
那你怎么不会用?直接new 个对象出来,转成接口就可以了
------解决思路----------------------
com组件要注册的
------解决思路----------------------
引用:
Quote: 引用:

有个想法  你可以试一下    去组件里 把它的权限设置一下。  看似是权限问题。

之前用微软的office  遇到过类似问题   就是组件权限问题。

可是该怎么设置组件权限

引用:
有个想法  你可以试一下    去组件里 把它的权限设置一下。  看似是权限问题。

之前用微软的office  遇到过类似问题   就是组件权限问题。

权限改了,可是也不行。估计和使用office的情况不同。。


安全选项都选自定义   添加一个everyone     ID
选项选交互式
  相关解决方案