2012-01-04 108 views
2

我有一个ocx文件,我想在Windows服务中使用它。我使用aximp工具从ocx创建dll,但这些dll不起作用,它们会抛出异常。在Windows服务中使用ocx文件

+0

如果您需要帮助,您将不得不提供更多信息。什么例外和什么是给出例外的代码。 – shf301 2012-01-04 03:57:37

+0

将OCX移至服务不会改变OCX的要求。例如,如果其线程单元是STA,则您有责任为OCX泵送Windows消息。 – 2012-01-04 19:03:52

回答

1

在C#中的Windows服务中使用ocx应该就像在任何其他时间使用COM一样。只需将ocx注册为com服务器,并在项目首选项中添加对其的引用即可。

+0

我注册了ocx文件到我的64位win 7中 – Bertan 2012-01-04 04:32:00

+0

我使用regsvr32 fk524pxn.ocx命令在我的64位win 7操作系统中注册了ocx文件。为了调试,我创建了另一个winform(x86)项目,然后将该ocx文件从引用导入到我的winform项目中。当我调试时,它会抛出一个COM异常,这是“灾难性故障(异常来自HRESULT:0x8000FFFF(E_UNEXPECTED))”。如果我通过propeties将我的winform项目转换为AnyCPU,那么它会抛出:“检索具有CLSID {5AB97943-73D7-4385-BF44-5E4FFCFEBE8C}的组件的COM类工厂失败,原因如下:80040154”,COM异常。 – Bertan 2012-01-04 04:44:04

+0

该probelm可以从您的ocx或dll引用其他未注册或无法在windows/system32文件夹中找到的dll引起。使用Dependency Walker,http://www.dependencywalker.com/来调试该场景。 – Motes 2012-01-04 05:02:09