0

在 c# .Net 4.0 中,我试图自动化 WordPerfect。

为此,我在我的项目中添加了对wpwin14.tlbWordPerfect 程序文件夹中文件的引用。

这具有在我的项目中创建 COM 接口的效果。

接下来,我应该能够编写实例化WordPerfect.PerfectScript对象的代码,该对象可用于自动化 WordPerfect。

但是,当我尝试实例化 WordPerfect.PerfectScript 对象时,c# 会引发错误:

“无法将 'System.__ComObject' 类型的 COM 对象转换为接口类型 'WordPerfect.PerfectScript'。此操作失败,因为对具有 IID 的接口的 COM 组件调用 QueryInterface '{C0E20006-0004-1000-0001-C0E1C0E1C0E1} ' 由于以下错误而失败:RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)。

在那条消息中归零的事情(我相信)是 RPC 服务器不可用。

我已经尝试过在后台运行 WordPerfect 而没有这样做。我已经去了我的服务并确保 RPC 服务都在运行并重新启动一切。

我是否有可能被防火墙阻止?这是我唯一最微弱的猜测

4

2 回答 2

1

我只是将它包装为一个 OLE 调用并使用 FinalReleaseComObject 清理我的 COM 对象。

这是我用来打开 Wp 文档并将它们转换为 pdf 的简单包装类。它在我们的自动化过程中很好地清理了:

public class WpInterop : IDisposable
{
    private bool _disposed;
    private PerfectScript _perfectScript;

    public PerfectScript PerfectScript
    {
        get
        {
            if (_perfectScript == null)
            {
                Type psType = Type.GetTypeFromProgID("WordPerfect.PerfectScript");
                _perfectScript = Activator.CreateInstance(psType) as PerfectScript;
            }
            return _perfectScript;
        }
    }

    protected void Dispose(bool disposing)
    {
        if (disposing)
        {
            Marshal.FinalReleaseComObject(_perfectScript);
        }
        _disposed = true;
    }

    public void Dispose()
    {
        if (_disposed == false)
        {
            GC.SuppressFinalize(this);
            Dispose(true);
        }
    }
}
于 2015-03-09T15:31:09.143 回答
0

确保您的 WordPerfect 版本已安装所有服务包和修补程序。多年来,这一步为我解决了许多听起来很随意的问题。看起来您正在使用 X4,Corel 不再支持它,这意味着更新不再在其网站上。您应该运行版本 14.0.0.756(SP2 加 2 个修补程序)。

我刚刚卸载了 WPX4 并重新安装了它,没有更新服务包。运行此代码给出了作为 OP 的确切错误:

using System.Runtime.InteropServices;
using WordPerfect;

namespace WP14TLB
{


class Program
{
    static void Main(string[] args)
    {

        PerfectScript ps = new PerfectScript();
        ps.WPActivate();
        ps.KeyType("Hello WP World!");

        Marshal.ReleaseComObject(ps);
        ps = null;

    }
}
}

安装服务包“神奇地”解决了这个问题。

顺便说一句,为了将来参考,您也可以尝试 WPUniverse论坛。有不少 WP 专家定期回答难题。

这里还有 X4 更新的链接

于 2015-03-07T02:26:19.783 回答