问题标签 [comobject]

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.

0 投票
0 回答
586 浏览

internet-explorer - 使用 COM 对象 (PowerShell) 中的开关启动 IE

我需要做两件事。一种是在我锁定某些元素(例如隐藏地址栏)之前隐藏 IE,第二种是使用 -noframemerging 开关启动它。这有助于在 Citrix 环境中交付与 Web 相关的 App-V 包。

我知道可以使用组策略来实现锁定,但是启动 IE 的环境需要为每个 IE 实例设置锁定,而不是作为一个全面的设置。

我已经使用 New-Object -ComObject InternetExplorer.Application 在 PowerShell 中创建了一个 IE COM 对象并设置了各种属性来创建一个锁定的环境,我可以让 IE 启动以更改可见属性。

然而,这会启动一个 iexplore.exe 实例,而无需任何开关。是否可以使用此 COM 对象作为模板使用 -noframemerging 开关启动 IE?

任何帮助,将不胜感激。

干杯,

马特

0 投票
1 回答
1901 浏览

c# - Excel.Workbook.SaveAs() 在 C# 中单击“否”进行文件替换时引发异常

我的小型控制台工具尝试读取一个 excel 文件并根据设定的标准创建新文件。

问题:当存在文件名冲突时(同名文件已经存在),程序应该生成一个唯一名称的文件。但是现在出现一条消息,带有“是/否/取消”消息框来保存文件。如果用户单击 NO 则抛出异常。消息如下:

例外:

以下行引发异常

代码如下:

上述方法在以下方法中被调用:

我到底在哪里做错了?

0 投票
1 回答
1806 浏览

c++ - 无法在 .net 中创建 com 对象实例

尝试在 .net 中为没有管理员权限的用户创建 com 对象时出现以下错误。

具有 CLSID {6CA9DEBE-BA91-4E56-9CD3-D40FE0755204} 的组件的 COM 类工厂失败,原因是以下错误无法检索:800704ec 此程序被组策略阻止。申请获取您的系统管理员以获取更多信息。(来自 HRESULT 的异常:0x800704EC)。

代码如下图:

动态对象=空;尝试 { 尝试 { var ComType = Type.GetTypeFromProgID("XenReports.XenReportsX"); obj = Activator.CreateInstance(ComType); } catch(Exception) { throw new Exception(TextMessageProvider.GetText(ResourceKeys.XenReportErrorMessage)); }

请让我知道是否有人遇到过这个问题。Com 对象用于 C++ exe。

0 投票
1 回答
313 浏览

visual-studio-2013 - '类型 x 存在于两个 dll 中' SAME dll + 强制转换为正确的对象类型返回 null?

一些信息:我正在使用 .Net 4.5,并尝试扩展Visual Studio 2013.

这行代码工作正常,我得到一个对象

类型是,根据观察窗口: Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt vce 类型是 VersionControlExt

但是,当我尝试使用此语句强制转换为这种类型时

我越来越空 vceCast 为空

奇怪的部分:

当我尝试在监视窗口上投射时,我收到了这个搞笑的错误消息: 类型存在于两者中 The type 'Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt' exists in both 'Microsoft.VisualStudio.TeamFoundation.VersionControl.dll' and 'Microsoft.VisualStudio.TeamFoundation.VersionControl.dll'

如您所见 - 它是同一个DLL!

我试过用dynamic,然后我得到了RuntimeBinderInternalCompilerException An unexpected exception occurred while binding a dynamic operation

我正在使用的参考文献列表:

在此处输入图像描述

我的结论:

我很确定这是由于我使用了一些错误的引用而发生的。知道如何找到它们吗?


附带问题:如何遍历 COM 对象(如 DTE/DTE2)以获取有关“活动”实例及其属性的信息?

0 投票
1 回答
4307 浏览

c# - 如何在 C# 中从 Active Directory 中获取 System.__ComObject 值

经过长时间的搜索,我决定就我的问题提出自己的问题。

我尝试在 Active Directory 中获取属性的值,但我总是得到一个System.__ComObject

我试过使用:

结果是PropertyValueCollection

但我不知道如何获得价值?

0 投票
2 回答
656 浏览

vb.net - 为什么handles.exe 没有发现我的DLL 而ProcessExplorer 可以?

问题:在 Windows Server 2012 r2 机器上,我正在尝试使用 Chef 以编程方式替换 .dll 命令组件(也就是我使用 regsvr32.exe 在机器上注册的 vb 6 库)但是当我尝试复制该文件,该网站的应用程序池对其进行了锁定。我不确定这是否重要,但 w3wp 进程设置为通过 IIS 以 32 位运行。

我的解决方案(不起作用):为了修复它,我正在考虑使用命令行工具来查找对 dll 的引用,然后回收正在使用它的应用程序池。不幸的是,虽然我可以让 SysInternals 的进程资源管理器找到 dll,但 Handles.exe(进程资源管理器的假定命令行版本)没有返回任何内容。我希望有人能告诉我我是如何错误地使用手柄的,或者是否有更好的工具。

Process Explorer - 它找到了我的 dll ComHelper.dll ProcessExplorer_working

通过命令行处理 - 它没有找到我的 dll ComHelper.dll HandlesCommandLine_not_working

-- 编辑 -- 这是当我以管理员身份运行时将其指向 w3wp 时的句柄输出 HandlesSearchingForW3WP

0 投票
2 回答
125 浏览

c# - 无法从 C# 中的 COM 对象获取最后一个错误

我的C#代码:

结果是:

“错误编号:0 错误消息:”

我的问题是功能GetLastError()Number并且msg应该包含这个函数执行后的errornumber和。message但他们还在empty

有人可以帮助我吗?

* 编辑 *

我将以下代码作为 VBScript 执行:

这个带有 cscript 的 VBScript 工作正常。我也得到错误信息和号码。所以 GetLastError() 方法有效。

0 投票
0 回答
60 浏览

internet-explorer - Web 抓取脚本仅在第一次尝试失败后才有效

我有一个用于在 Internet Explorer 中自动执行任务的脚本。但是该脚本只有在第一次失败后才有效。

如果我打开powershell.exe并运行脚本,它会给我错误

无法在空值表达式上调用方法。

但如果我F5再次点击并运行它,它从那时起就可以完美运行。如果我关闭 PowerShell 并重新打开,错误会在第一次尝试时再次出现。

脚本的逻辑基本上是这样的

代码失败上线

我尝试添加默认的 webclient,但没有任何改变。

0 投票
0 回答
65 浏览

c# - 将 TextBox 类型的 COMObject 转换为 C# 对象

我目前正在开发一个与客户端通信的应用程序。如下所示,我有一个委托方法,它将接收到的消息作为 TextBox 类型的 ComObject 返回。

到目前为止,我没有成功地尝试强制转换 ( ComObj1as TextBox),并试图让IntPtrforComObj1作为参数传递 Marshal.GetObjectForNativeVariant(),但都无济于事。

我的问题是我应该如何ComObj1转换为 C# 对象?

0 投票
1 回答
915 浏览

powershell - 创建 Windows Vault 凭据并将其链接到 Outlook - Powershell

经过很多小时研究这个问题的解决方案但还没有找到它,想也许你可以帮助我......

我正在尝试自动化邮件迁移过程,在客户端我正在创建 Outlook 配置文件(PRF 文件,来自办公室自定义工具),然后更新设置等,最后我将数据导出到 pst到目前为止,Outlook com 对象(outlook.interop)很好,问题是当我创建配置文件并启动 Outlook 时,如果我检查“记住密码”,我会得到“要求凭据”窗口来输入用户/密码",然后 windows 将其保存到保管库凭据。

现在我想在启动 Outlook 之前预先创建凭据,因此 Outlook 开始时无需询问凭据并在保管库中找到它,但是当我在保管库中手动创建凭据时,Outlook 不使用它并要求输入密码,我尝试使用 cmdkey /generic:MS.Outlook:user@domain.com /user:$email /pass:$pass- 不起作用,我发现:当我通过 Outlook 凭据对话框保存密码时,它会使用那个特定的用户密钥,所以其他用户看不到它,反之亦然,当我手动创建凭据时,它使用当前登录的用户作为加密密钥,所以当 Outlook 打开时它无法识别密码,所以我认为这个这就是为什么不工作的原因,就像 powershell securestring 只在加密它的当前用户上工作一样。(但这只是我目前的看法)

所以,也许你们中的一个人知道如何:

自动创建凭据并将其链接到 Outlook 配置文件/帐户,或者:以不同用户的身份创建凭据,另外,我将调用命令视为不同的用户,然后执行“cmdkey”,但计算机域不一样作为我的本地计算机,

欢迎任何想法,如果可能的话,也可以通过 Outlook com 对象、注册表、脚本等等,这对我的项目非常重要,同时我使用 shell.sendkey 自动填充用户密码,但它确实不是稳定的解决方案。