问题标签 [jacob]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - ProgID and file extension relation
I am working on a program using the JACOB project (JAva COm Bridge).
There is a file to open, the entire name is passed along (ex. c:\test\test.xls). In order for JACOB to create a new ActiveXComponent it needs to be passed a ProgID or CLSID. (Such as Excel.Application, or Word.Application, but outside of the MS realm there is also Autocad.Application etc.)
So how can one relate either the file extension or MIME type to a given ProgID or CLSID? Is there another db that I can join to Win32_ProgIDSpecification? Win32_ProgIDSpecification has all the ProgID's.
java - JACOB (Java/COM/ActiveX) - 如何对事件处理进行故障排除?
我正在尝试使用 JACOB 与 COM 对象进行交互。
我能够在对象上调用初始化方法(并获取其属性),但没有得到任何事件。下面引用了代码。
我有一个示例 HTML+Javascript 页面(在 IE 中运行),它成功接收来自同一对象的事件。
我正在考虑以下选项,但希望有任何具体的故障排除想法......
将我的 Java 程序发送给开发 COM 对象的团队,让他们寻找任何可疑的东西(对象是否有办法知道是否有客户端在监听其事件,以及它们是否成功交付?)
进入 JACOB 的本机部分并尝试在该端进行调试。这有点吓人,因为我的 C++ 生锈了,而且我从来没有为 Windows 编程过。
java - “com.jacob.com.ComFailException:找不到绰号”为什么?
我使用 jacob 最新版本和 jacobgen。
我把所有需要的dll放进去c:\windows\system32
我由 jacobgen 生成了关于 dll 的包装器。
但我有一个例外。谷歌没有帮助。:(
Windows 注册表中可能需要注册表 dll 吗?
java - Java、Jacob 和 Microsoft Outlook 事件:接收“找不到事件 iid”错误
我正在编写一个使用Jacob 库(桥接 COM 和 Java)与 Microsoft Outlook 交互的 Java 程序。这个程序创建了一个新的MailItem,向用户显示它的Inspector窗口。我希望订阅检查员的Close 事件,以了解用户何时完成对其邮件项目的编辑。
要订阅该活动,我按照Jacob 文档中的说明进行操作(大约在页面下方2 ⁄ 3处):
当前的 [event] 模型在概念上类似于 Visual Basic
WithEvents
构造。基本上,我提供了一个名为的类com.jacob.com.DispatchEvents
,它有一个构造函数,它接受一个源对象(类型com.jacob.com.Dispatch
)和一个目标对象(任何类型)。查询源对象的IConnectionPointContainer
接口,我尝试IConnectionPoint
为其默认源接口(我从 获取IProvideClassInfo
)获取一个。同时,我还创建了默认源接口的 DISPID 到实际方法名称的映射。jmethodID
然后,我使用方法名称从目标 Java 对象 获取句柄。当前所有事件方法都必须具有相同的签名:一个参数是一个 Java 变量数组,以及一个 void 返回类型。
这是我的InspectorEventHandler
课程,符合 Jacob 的文档:
以下是我使用此类订阅事件的方式InspectorEventHandler
:
但是,最后一行失败,但出现以下异常:
据谷歌称,其他一些人也收到了这个错误。不幸的是,他们都没有收到答复。
我正在使用 Jacob 库的 1.7 版,它声称可以防止这个问题:
1.7 版还包括直接从 progid 读取类型库的代码。这使得处理所有 Microsoft Office 应用程序事件以及 IE5 事件成为可能。有关示例,请参见 samples/test/IETest.java 示例。
我注意到上述IETest.java
文件订阅了这样的事件:
因此,我尝试以类似的方式订阅我的活动:
所有这些尝试都因相同的错误而失败。
java - 使用 JACOB (Java) 保存 Word 文档
我正在尝试制作一个简单的 Java 程序来打开现有的 word 文档,更改某些内容并将其保存为 .html 文件。
不工作的部分是将其保存为 .html 。问题是,我得到了 html 文件,但它只是一个重命名的 doc 文件。所以不是一个我可以使用的 .html 文件。
这是我用谷歌发现的:
我必须做什么才能获得一个 html 文件作为输出?
先感谢您。
java - RMS 和 Websphere 6.1 32 位的问题
我正面临 Websphere 和 RMS 的问题,以下是我所拥有的:
- Windows 2003,sp2,64 位,企业版。
- 微软办公字 2003 sp3。
- 该机器已连接到域,并且我由域用户(使用电子邮件地址)登录。
- 已安装 RMS 客户端。
- 尝试从 Word it self 应用RMS 时,RMS 工作正常。
- Websphere v6.1 (6.1.0.21),32 位,Java 版本:IBM J9 VM(内部版本 2.3,J2RE 1.5.0 IBM J9 2.3 Windows Server 2003 x86-32 j9vmwi322 3ifx-20080811(启用 JIT)。
我正在尝试使用JACOB库自动化 MS Word,并在 system32 文件夹中分配了 jacob dll (32),并创建了一个独立的 java 客户端,它打开 MS Word,打开 MS Word 文件并进行一些自动化操作(文本替换),这个java客户端工作正常,正确调用COM应用程序(MS Word),一切正常。之后,我尝试通过调用传递 RMS XML 模板文件路径的方法“ ApplyPolicy ”在 Word 文档上添加 RMS 策略来改进此客户端。我试过这个客户端,它工作正常。
之后,我改进了该客户端并将其转换为 Web 项目并尝试将其部署在 Websphere 6.1 上(在我通过将 JACOB dll 放入 websphere 本身的 /bin 目录中配置了带有 websphere 的 JACOB 库之后)。但在此之前,我删除了“ApplyPolicy”调用并尝试了它,它工作正常,MS word 文件打开并替换了文本,结果文件被正确保存。之后我恢复了“ApplyPolicy”的调用并尝试了,但是服务器挂了,页面还在加载中,我使用TASK管理器检查了进程,我发现有一个进程WINWORD.exe,当我尝试时杀死它,服务器返回并在其日志中打印错误(遇到 COM 异常:在调用时:ApplyPolicy 描述:)。
查了一下发现我运行独立的java应用打开任务管理器有一个java.exe *32进程和winword.exe *32进程,但是当我转换成web应用运行从在 websphere 内部并检查了任务管理器,已经有一个进程 java.exe *32(在服务器启动时启动),当我调用我的页面时,创建并挂起一个 winword.exe(没有 32)进程,结果服务器也挂了。所以请帮助我,任何帮助将不胜感激。
java - 从服务通过 JACOB 调用时,Office 2007 无法打开文件
我正在使用 JACOB 从 Java 对 PowerPoint 和其他 Office 应用程序进行 COM 调用。在特定的 Windows 7 机器上,我经常收到以下消息,但并非总是如此:
从excel我得到:
Word 错误只是:
以下是我正在运行的,错误来自最后一行。
我已经尝试在执行 Open 调用之前放置一个断点并且文件在那里,我实际上可以在 GUI 中使用 PowerPoint 打开它,但是当我单步执行时抛出异常。
这个问题的烦人之处在于,一开始它似乎一直在发生,但在戳了一会儿(重新运行相同的代码)之后,它最终成功完成,之后就再也没有发生过。
进一步研究我发现这只发生在 .ppt、.doc 和 .xls 文件中,而不是 .pptx、.docx 和 .xlsx。据我所知,它与文件系统无关(我已经换掉了复制文件的机制并尝试将文件放在不同的文件系统上)。
我刚刚注意到,这只发生在 Java 应用程序作为服务运行时,而不是当我从命令行运行时catalina.bat start
。
java - 从 Java 获取打开的 Excel 文件(工作簿)列表
我在将 MS Excel 集成到我的 java 应用程序时遇到问题。我使用 Jacob 通过 COM API 与 Excel 对话,这通常可以正常工作。可以从应用程序打开 XLS 文件,并正确存储更改。
但是后来我注意到当 Excel 已经打开并且至少一个工作簿在内存中更改但尚未保存时,我的代码变得有问题。像这样的简单语句失败并出现异常:
我对工作簿集合做的很少:只是添加一个新工作簿或计算它的大小。这真的应该以某种方式工作。
我错过了什么吗?
java - 在 Office 2010 中使用 JACOB 打开使用 POI 生成的 Excel 电子表格时出现问题
在工作中,我们有一个非常古老但稳定的小程序,它需要两个 excel 电子表格(一个用作模板,另一个用作数据源)。模板由用户在 Excel 中创建,但数据源是在 Web 应用程序中使用 POI 创建的。在小程序中,两个电子表格都通过 Java/COM 桥 (JACOB) 打开,使用以下方法:
从小程序日志和 hs_err_pid 文件中,我知道 JACOB 可以很好地打开模板表,但数据表在 Dispatch.call 上失败。
从 hs_err_pid 文件:
自从在 Office 2010 上进行测试后,我们才遇到此问题。
我们使用 POI 2.5.1 和 JACOB 1.9,它们在过去几年都在使用,我打算尝试升级它们,但我想知道这两个项目和 Office 2010 是否存在已知问题。虽然 POI 3.x支持 OOXML 我们的代码需要保持与早期 Office 版本的向后兼容,因此我们更愿意坚持使用 HSSF 生成。
java - 使用 Java/JaCoB 让 32 位 COM 客户端与进程外 64 位服务器通信
这个问题表明 32 位 COM 客户端可以与 64 位 COM 服务器通信(反之亦然),前提是服务器处于进程外。我正在尝试使用 Java Com Bridge (JaCoB) 库实现一个客户端,以这种方式与第三方进程外服务器通信,根据这个问题应该是可能的。如果我匹配进程架构(32 位到 32 位或 64 位到 64 位),我正在使用的测试代码会成功,但任何交叉组合都会失败,并出现此异常:
有任何想法吗?
更新
调试异常后,我相当确定底层 COM 错误是DISP_E_BADCALLEE。经过一些网络挖掘后,我发现一个可能的原因是方法签名无效,所以这里有更多细节。COM 服务器是 MATLAB,我正在尝试调用Execute
andQuit
方法。以下是他们的 COM 类型签名(来自 OLEView):
BSTR _stdcall Execute([in] BSTR Name);
无效 _stdcall 退出();
这是我的测试代码: