我为什么要学习COM?

最近我在工作中听到很多关于COM的事情。我还了解到COM是旧的。COM已被弃用。COM没有未来。这些也是真的吗 我想学习COM,因为我想知道它有什么大惊小怪之处,但我无法说服自己,这是花这么多时间学习它的一个坚实理由 那么,有谁能告诉我: 我为什么要学习COM 一旦我学会了COM,我可以用它做什么?我指的是它的应用 学习COM(或至少熟悉其概念)意味着您可以与数千个现有组件集成,包括Microsoft Word和Excel 我主要在Java领域工作,但对COM有一点了解意味着我可以有效地与Wor

Com 内存不足错误-用于查找经典ASP内存泄漏的工具?

我在经典ASP中遇到内存不足错误,可能是在尝试访问数据的地方。例如: Microsoft VBScript compilation error '800a03e9' Out of memory (some file) Line 0 这些错误只会偶尔发生一次,并且会持续发生几分钟,然后Web服务器必须重新启动应用程序池,因为所有会话都会丢失 在大量使用ADO进行数据访问和一些其他现成的COM对象的经典ASP应用程序中,什么是查找/诊断内存泄漏的好工具 可能任何内存泄漏都来自COM对象,而不是

清理.net应用程序中COM对象的最佳方法

我正在处理一个.Net windows应用程序,它在内部使用COM dll。 在以下4种释放COM对象的方法中,哪一种是最好的 1. if (obj != null) { Marshal.ReleaseComObject(obj); } 2. if (obj != null) { Marshal.ReleaseCom

COM注册失败:“;自动化错误:系统找不到指定的文件";,将dll安装到tlb文件以外的其他文件夹时

我们在VB.NET中开发了一个COM组件(我们称之为MyLib),供Access应用程序(我们称之为MyApp)使用。为此,我们需要使用生成的MyLib.dll和MyLib.tlb文件进行COM注册。当我将这两个文件安装到MyApp的文件夹中时,一切正常,COM函数被正确调用。然而,当我将dll安装到一个公共文件夹中时,我在标题中提到了一个错误-我这样做的原因是因为我们希望允许在同一台机器上安装不同版本的MyApp。因此,如果COM组件没有更改,我们当然希望在这些不同版本之间共享它,并让Wind

Com 如何获取通过客户端调用在exe中作为服务器启动的进程?

我有这样的客户端代码: Dim server as Object Set server = CreateObject("some-prog-id") exe中的服务器已启动,由于某些原因,它会不时挂起。我必须在taskmanager中杀死它才能让我的客户活着。 我想在时间到期时自动杀死exe进程中的服务器,但不知道如何正确获取它的ID。实际上我知道进程名称,但可能有几个进程具有以前启动的相同名称 如何确定由客户端代码启动的进程 简单的回答是你不能。它是由process server或dllho

COM“;“类未注册”;如果使用其他dll。如何调试此错误?

情况是这样的。我运行Labview并通过ActiveX托盘调用我的COM对象方法。它工作了,我用调试器遍历我的代码 但当我开始使用(取消注释)侧dll中的代码时,我在Labview中看到“类未注册”错误。我的附加dll及其依赖项位于单独的目录中。所以我尝试将PATH环境变量设置为这个目录,然后运行Labview。但它仍然不起作用 所以问题是如何调试这种情况?我查看了事件记录器,但没有发现任何相关内容 我在C++中创建了自己的合成应用程序,它也调用了与LabVIEW相同的方法。它可以工作。问题出在

本地COM服务器 我有一个C++ DLL,其中我实现了一个COM接口。此dll加载到进程A中,进程A正在运行。我希望此进程作为COM本地服务器运行exe是正常的控制台应用程序

我有另一个进程B,它创建用dll编写的com类的实例。 我想使用这个实例从COM类调用方法,但是这些方法应该在进程A中执行。目前它们正在进程B中运行 当我从com类而不是dll创建exe时,com类的方法在不同的进程中执行 但是我不能为com类创建单独的“exe”。我希望它们在运行时加载到进程a中的dll中。使用运行对象表来实现进程间通信 使用运行对象表实现进程间通信。

Com 错误:调用选项的目标已引发异常

我已经编写了一个外部应用程序,用一个为COM注册的dll驱动autocad。我已经按照以下步骤编写了我的应用程序,但是我用AddNumbers()方法替换了以下代码: 但是,当我运行应用程序时,autocad软件会立即打开然后关闭,并显示此错误消息:调用目标已引发异常 但是,如果我对以下代码行进行注释,应用程序将正常工作,不会出现任何错误: doc = dm.Open(MyDWGFilePath, false); Application.DocumentManager.MdiActiveDocu

是否在兼容模式下使用COM对象?

我有一个第三方COM组件,它不能在Windows 8上工作,但如果在Windows 8上以Windows 7兼容模式运行,它将工作得非常好。但是,我不希望软件在兼容模式下运行,只希望COM组件。可能吗 顺便说一句,不可能获得COM组件的更新/工作版本 谢谢兼容性模式一次适用于整个流程。执行您所要求的操作的唯一方法是在不同的容器进程中运行COM对象,可以使用DCOM(如果COM对象的接口具有必要的存根和代理注册以用作进程外对象),也可以编写自己的远程处理层

如何找到COM对象的ActiveX ClassID?

我已经为ActiveX控件开发了一个集成。问题是,在开发过程中,创建了一个新的构建,这意味着存在不同的ActiveX类ID 有没有办法在不联系开发人员的情况下确定COM对象的程序ID和ActiveX类ID 通过在线研究,我找到了对OLE/COM对象查看器的引用,但除了扩展每个节点之外,似乎没有任何方法进行搜索 提前感谢您的建议。如果您有COM服务器的类型库,并且可以使用Oleview.exe查看它,您当然可以看到CLSID。您不必查看树中的每个节点,只有coclass节点是相关的 但是,您无法在

Xamarin支持COM吗?

MonoProject或Xamarin studio是否支持Microsoft的COM技术?我想知道我是否可以在mono中使用ole32.dll。我已经可以为.net使用一些dll,但是当使用依赖ole32.dll的其他dll时,我会遇到一个找不到的异常。否 Mono 1.0和Mono 1.1.xx不支持COM,这是一个已知的 缺少单声道的功能。支持MS COM的初步工作已经开始 在窗户上。长期目标是支持各种非托管服务 组件技术包括MS COM、XPCOM和UNO

在DirectX代码中正确使用ComPtr

我正在编写一个基于DirectX 11的引擎。 其中所有DirectX Com对象都包装在Microsoft::WRL::ComPtr中。 但不幸的是,当我在关机时调用ID3D11Debug::ReportLiveDeviceObjects时,它报告的对象数更多,超过1个对象的引用计数不为零 我很困惑,到底是哪一个代码增加了引用计数,最终阻止了引用为零。例如,我在代码中提供了ID3D11ShaderResourceView的以下示例用法: ID3D11ShaderResourceView在我的呈

如何在构建服务器上构建依赖于第三方COM库的项目?

我有一个我正在开发的项目,它使用第三方COM库作为参考,我想在VisualStudioTeamServices构建客户端上构建这个项目。我的第一个想法是创建一个MSBuild任务,该任务检查COM库是否安装在本地计算机上,如果没有安装,则继续安装,但这似乎是一种非常麻烦的方法。我四处搜索过,但似乎所有的答案都可以追溯到几年前,我似乎无法让我在VS2013项目中找到的少数答案发挥作用。其他人是如何解决这个问题的?有没有更干净的方法 作为参考,我也尝试过,看起来非常干净,但没有效果。我会选择以下路线

Com 通过代码在typelib文件中查找依赖类型库

正在寻找查找类型库的依赖类型库的方法。例如,在IDL中声明依赖库时,公共依赖项为stdole2.tlb,并声明为: importlib(“stdole2.tlb”) 我可以使用OleView.exe来查看这些依赖项,但我正在试图找出如何在代码中实现这一点。ITypeLib或ITypeLib2接口中似乎没有任何成员可以获取这些依赖项。我已经浏览了OLE Automation参考资料,但还没有找到获取接口的方法 它们在某种程度上是类型库的二进制资源格式吗 有人能给我指出正确的方向吗?这里是类型库的G

在VB6 IDE中工作时卸载COM控件

我日常工作的一部分是维护和扩展遗留的VB6应用程序。通用引擎是用C/C++编写的,VB6使用这些函数来提高性能 说到异步编程,C接口是不够的,我们依靠COM控件向VB6触发事件 我的问题是,当我在VB6中注册控件时,VB会将该控件加载到内存中,直到我退出VB6 IDE时才会卸载它。由于控件一直在加载,我无法在VC6中重新编译它,因为DLL文件已锁定 我找到的解决方案不是在VB中启用该控件,而是将CreateObject()与我的控件的全名一起使用。问题是,我必须将我的控件声明为对象,因为VB6对

在哪里可以找到可以在Powershell中创建的所有COM对象?

在Powershell中,我可以创建COM对象,例如用于控制Microsoft Office应用程序: $excel = New-Object -com "Excel.Application" $excel.visible = $true 如何列出可以在Powershell中创建的所有可用COM对象?我发现了这个Powershell一行脚本,它应该列出所有COM对象 gci HKLM:\Software\Classes -ea 0| ? {$_.PSChildName -match '^\w+

什么';Windows Common Controls 6.0组件(MSCOMCTL.OCX)的正确来源是什么?

我正在尝试编写ActiveX控件,并注意到我似乎无法在Visual Basic(6.0)中创建ActiveX控件,该控件的功能稍微复杂一些。标签、按钮和复选框等简单控件似乎工作正常,但只要我尝试将树控件等添加到表单中,ActiveX控件就会在我将其嵌入另一台计算机上的某个主机应用程序时保持完全空白。不过,它在我的开发盒上运行良好 在浏览Projects->Components(Ctrl+T)列表时,我发现两个库显然包含一个树控件: Microsoft Windows通用控件5.0(SP2) M

使用.NET客户端调试COM对象 我有C++编写的遗留COM对象,需要从C客户端调试。我只需一步一步地通过C++代码,而不是C代码。这可能吗?如何进行设置?

当您拥有COM服务器的源代码时,将其加载到VS20xx中,并将.NET应用程序设置为要启动的程序。在类创建函数和COM服务器接口的方法中添加断点 运行程序时,VS可能会声明程序没有调试信息。忽略这一点,COM服务器具有调试信息。在不使用调试器的情况下启动客户端,然后在调试器设置中选择“本机代码”附加调试器

.NET进程外COM对象在API调用中共享静态实例

很难解释我们的处境 我们有一个三层应用程序。引擎是一个用C++编码的DLL,然后我们有一个VB6 ActiveX EXE,通过API调用访问引擎,在顶层,我们有一个Excel Adin(在C VI中使用VSTO框架)调用中间层带有一个互操作DLL。此时,从加载项到引擎的每个“连接”都会创建一个新的EXE(VB6使用API调用来访问引擎),并且一切正常。 现在我们将中间层移动到.NET,它“大概”运行良好(它通过了所有的单元测试),但是,当我们同时打开2个“连接”时,我们发现了一个错误(ups,没

C++\MSI无法注册Cli COM程序集

我的申请有一个严重的问题。我有一个本机应用程序,它使用一些托管类来工作。我创建了一个C++\Cli包装器,它是非托管代码和托管代码之间的代理 在这个代理项目中,我声明了一些公开的COM对象,它们的实现使用托管程序集中声明的C#对象 在我的开发环境中一切正常,但当我想在干净的系统上安装我的应用程序时,问题就出现了 我有一个MSI项目,应该使用vsdraCOM或vsdraCOMRelativePath注册此CLR代理。事实上,它们都不起作用。应用程序显示未注册特定对象(在此代理中定义)的错误 我可以

Com 注册/加载64位.NET dll时出现问题

我有一个VB客户端应用程序,它调用VB进程内COM服务器myprogressbar (是的,这是VB调用VB的一种反常方式,但客户端是一个测试工具-在生产代码中,客户端不是VB,需要使用COM) 此操作失败并出现错误 System.Exception:无法创建ActiveX组件 x86服务器已(成功)注册到 并且x64服务器已(成功)注册到 更新:编译为任何CPU的单个服务器也会发生同样的情况。以前关于x86版本运行的任何报告都只涉及到仍在注册的以前的安装。解决了这个问题 问题是.NET程序集,

Com 远程过程调用失败,未执行。(来自HRESULT的异常:0x800706BF)

我确实在微软论坛上问过这个问题,但没有得到任何答复。我在这里提问,希望得到答案。我的问题详述如下 我有一个C#应用程序,它使用ADSI API管理用户的广告。为了管理用户的密码,我使用Interop.ActiveDs.dll的IADsUser.SetPassword(字符串NewPassword) 我面临的问题只有在Windows 2008 enterprise SP2操作系统上安装域控制器时才会出现。它在Windows 2008 R2上不可复制 当我尝试逐个用户设置密码时,根本没有问题。但是,

Com 使用SHGFI_图标时,SHGetFileInfo会导致堆损坏

当我为测试中的进程启用页面堆时,它会触发访问冲突,这向我指示在调用SHGetFileInfo时发生了某种类型的堆损坏 调用堆栈的顶部显示msvcr90!wcspbrk并向下走,它在ole32中显示COM相关的项目,直到到达shell32,我们称之为SHGetFileInfo 从我在网上发现的情况来看,使用shell32的古怪的一个常见问题不是首先调用CoInitialize/coInitializeX,但此时已经调用了coInitializeX(),在下面代码之前调用它只会返回S_FALSE 下

如何比较两个任意COM对象(可以获得任意对象的CLSID吗?)

我在COM中实现了一些东西,我在其中新建了一些对象(本例中为FilterGraph IFilters),每次新建另一个对象时,我都想遍历前面的列表,看看我要添加的对象是否“已经在图上”(已经在列表中)。我的第一个想法是使用指针相等(不起作用)。然后我想用CLSID进行比较 有没有办法从“任意”COM对象获取CLSID 我能找到的最接近的是:从显示名的子字符串中更新guid 和(使用CreateObject,但我使用的是EnumMoniker而不是CreateObject) (注意,我发现IBa

Com 如何在文件夹上注册属性处理程序?

我为Windows构建了一个虚拟文件系统(不是名称空间扩展),它充当由文件和文件夹组成的文档管理服务器的前端。为了能够在Windows资源管理器中将DMS对象的一些元数据显示为其他可选列,我通过实现COM属性处理程序成功地向Windows属性系统提供了属性。当普通属性处理程序专注于他们认为负责的特定文件类型时,“我的属性处理程序”会将属性添加到所有文件中,而不管其类型如何。因为属性处理程序只能在文件类型级别注册,所以我在 HKLM\SOFTWARE\Microsoft\Windows\Curre

在从属DLL中指定独立的COM设置,还是仅在可执行文件中指定? < >我将C++ COM项目设置设置在C++ VS2005项目中,使用免注册激活方法加载OCX组件。如果ocx组件也在我的应用程序加载的DLL库中使用,我是否也需要在该DLL项目的设置中设置独立的COM设置?或者只设置主应用程序的嵌入清单就足够了吗?谢谢

据我所知,隔离是每个进程,而不是每个模块。因此,应用程序清单中的任何内容都适用于从该应用程序启动的任何进程 想想CoCreateInstance需要做些什么来支持reg free COM—它需要以某种方式找到清单文件,如果它存在,就不要去注册表获取激活信息 因为CoCreateInstance没有参数告诉它清单的路径,所以它需要从上下文派生它 对于.DLL没有真正的上下文,但是对于.EXE,当前进程句柄可用于派生可执行文件的路径,等等,所以我怀疑他们就是这样做的

Com 获取错误“;Activex组件无法创建对象";在VB6代码中使用.NETDLL时

嗨, 我正在客户端计算机上部署VB6应用程序。应用程序需要从C#.NET dll访问代码。我创建了一个.NETDLL的COM对象,并使用VB6使用并行版本控制(免注册COM)。它在开发机器上运行良好 但在客户端计算机上,它抛出了一个错误“ActiveX组件无法创建对象” 我创建了两个清单文件,一个用于VB应用程序,另一个用于C#应用程序。 我通过VisualStudio2008将C#manifest文件嵌入到C#.NET dll中 我错过了一些步骤。 请帮帮我。 提前感谢。您是否在GAC中注册了

Com 调用Matlab';s MLApp.MLAppClass.FEval来自F#

Matlab提供了一个COM接口,支持远程执行任意函数(和代码段)。特别是,它有一个调用给定Matlab函数的Feval方法。此方法的第三个参数pvarArgOut具有COM类型VARIANT*,并作为以下类型的参数出现在Visual Studio F#editor中: pvarArgOut: byref<obj> 这段代码编译得很好,但在调用interp1时,我遇到一个COM异常: A first chance exception of type 'System.Reflecti

COM Dll引用是否需要手动处理?如果是,怎么做?

我已经用VB编写了一些代码,用于验证Windows防火墙中的某个特定端口是否打开,并以其他方式打开一个端口。该代码使用对三个COM DLL的引用。我编写了一个WindowsFirewall类,它导入DLL定义的主命名空间。在WindowsFirewall类的成员中,我构造了由引用的DLL定义的一些类型。下面的代码不是整个类,但演示了我正在做的事情 Imports NetFwTypeLib Public Class WindowsFirewall Public Shared Functio

Com MIDL编译器错误:MIDL

当我使用MIDL将IDL文件编译为.h和.c时,我得到一个错误,上面写着: midl:命令行错误MIDL1004:无法执行C预处理器cl.exe。 请帮助我,我不知道为什么 我使用的MIDL编译器是VC++6.0的一部分 谢谢。看来您的环境设置不正确。编译之前,请尝试调用vcvars32

用C+编写.dll+;对于VB6 我试图把基于VB6的.ocx移植到C++中。我选择的迁移路径如下: 将当前的.ocx迁移到一个普通的COM.dll中(它实际上没有任何用户界面组件,我也不知道为什么它是一个.ocx) < LI>编写COM.DLL的C++版本,并将其作为我的替换。< /LI>

我的问题是: a。这似乎是正确的方式吗 b。在VisualStudio 2010中,如何在C++中创建COM.DLL?我尝试创建一个简单的.dll,使用tlbexp生成一个.tlb文件,但这似乎不起作用。我可以将我的.tlb拉入VB5项目,但没有要实例化的类。如果尝试使用regsvr32注册.dll,则会出现“无入口点”错误 我在VS2005中看到了一个选项“注册COM互操作”,但在VS2010中我还没有找到一个等价的选项 提前感谢您的帮助 您必须创建一个ATL项目: 然后将COM对象添加到组件

Com 在IDA Pro中,是否可以将结构字段偏移到.data段中定义的vtable?

这就是我想要实现的目标。我识别了一个我定义为存储类数据的结构的类。类的其中一个方法使用类字段,就好像它是指向vtable的指针一样 int __thiscall SignOn(struc_4 *this) { v1 = this; if ( !v1->vtable_40194AE0 ) return E_UNEXPECTED; v1->field_3E8 = 0; if ( !sub_686F7193(v1) ) return (*(*v1->v

Com 使用PowerShell创建ISO映像:如何将IStream保存到文件?

我想在Windows上创建一个ISO映像,也就是一个.ISO文件。这可以使用COM组件实现,我在中找到了有关如何使用PowerShell实现这一点的说明 在第3步之后,这些说明说“在这一步中,您可以停止并将结果图像保存到本地硬盘,这将是一个纯iso图像。” 我的问题:如何在PowerShell中获取$resultStream,即从检索中得到的COM对象,并将其内容保存到文件中?您需要使用FileStream writer。请查看此链接,了解如何在c#中执行此操作的示例。 该函数可用于创建帮助您

Com 在SWbemPropertySet对象上迭代

WMI中使用COM API的WQL查询返回SWbemObjectSet。由此,我们可以使用该方法对集合中的所有对象进行迭代,从而产生许多。它们有一个属性属性,返回一个 此对象有一个Count属性,但没有ItemIndex方法,而只有一个Item方法,该方法获取属性的字符串名称。我想迭代所有可用的属性,因此我没有可用的名称。我尝试调用ItemIndex方法,但(根据文档)此对象上不存在该方法。有许多VBScript文档对object.Properties中的每个道具执行类似于的操作,因此我认为这是

Com MSXML6引用似乎仍然在VB6应用程序中使用MSXML4

我正在旧版VB6应用程序中引用MSXML6(MSXML6.dll)。无论我使用DOMDocument40还是DOMDocument60,我仍然看到msxml4.dll与msxml6.dll一起使用。然而,我在项目中找不到任何其他应该使用的东西,除了我解析一个小配置的地方 为什么我会看到msxml4.dll,因为它没有被项目引用?VB6是否将msxml4用于某些用途?MSXML6在其COM实现中似乎是msxml4的新版本,而不仅仅是作为“营销”版本号 在OLEView中查看两者的IDL可以看到以下

了解MSDN COM文档的秘诀是什么?

我正在寻找一种“典型”的方式来导航MSDN,让COM类做他们想做的事情 示例问题:我正在寻找一种API方法来解除阻止本地文件(以编程方式从文件中删除internet区域/web标记) 我在stackoverflow.com上找到一篇关于clsid_persistentzoneidentifier的帖子。所以我在MSDN中搜索,找到了。我所寻找的,是一个人在到达这个url后所做的事情。从这个位置,我无法计算操作的顺序。如何将此IZoneIdentifier连接到IPersistFile?等,必须有

如何从COM dll中的序号获取函数名

我试图从COM dll的序号中获取实际的函数名。我尝试使用dumpbin.exe,但它只返回每个序号的[NONAME](前几个除外) 序号提示RVA名称 21 0 00002439 DLLCANNULOADNOW 25 1 00007F41 DllGetClassObject 116 2 0000539C DllMain 138 3 00008633 DllRegisterServer 176 4 00008640 DllUnregisterServer 1 0009152E[NONAME] 2

Com VB6错误-无法加载.ocx文件

今天大部分时间我都在尝试将OCX文件加载到我的一个VB6项目中。我已经尽我所知在注册表中检查COM注册,并且多次尝试在文件上使用REGSVR32,但都没有效果。当我尝试加载组件(在Project-->Components下)时,从VB6得到的所有信息都是无法加载“FilePath\FileName.ocx”。其他人以前见过这个问题吗?如果是的话,有什么办法解决它吗?只是一些帮助隔离问题的提示 使用OleView查看控件 检查名称:如果它是保留字之一,如“菜单”,vb6将无法加载它。(尽管vb6很

Com 如何使用WMI获取PC上所有NIC的MAC地址

大家好 我正在尝试修改MS提供的代码,尝试访问网络适配器配置 当我尝试使用VC++2005访问Mac地址或IPAddress属性im时,它中出现空指针异常。在此处检查//异常:vtProp作为NULL行返回,我在其中获取异常 #define _WIN32_DCOM #include "stdafx.h" #include <iostream> using namespace std; #include <comdef.h> #include <Wbemidl.h&

VB脚本与COM

我想从ASP调用COM组件的某些函数。我想知道 How can I create a COM object?. How can I use VARIANTS to pass to the COM object? Can I pass reference parameters from ASP to COM object? What are the limitations of passing reference objects to COM? 我从哪里可以得到更多关于这方面的信息 如何创

COM可以与责任链模式一起使用吗

其思想是COM接口有一个主要实现,需要处理不同的MIME类型(MIME只是一个示例)。主要实现处理客户站点上预期的几种常见MIME类型 要处理新的MIME类型,必须实现相同的COM接口,但只针对新的MIME类型(让我们称之为增强COM对象)。客户端首先调用增强的COM对象,该对象处理其MIME类型,或者在无法识别MIME类型时调用主COM对象。我们可以假设,可能不止一个增强的COM实现。因此,存在一系列责任 COM责任链是否可行?它实用吗 谢谢,理论上它可以,但我认为在这里使用工厂模式可能会更好

Com [in]参数能否用于返回数据?

我不太清楚[in]和[out]如何与传递值和传递引用概念交互。MSDN文档明确指出,[in]表示数据从调用者流向被调用者,数据从被调用者流向调用者需要[out] 然而,有人建议我对调用方可以检索结果的对象使用[in]参数 IDL中的方法定义示例: HRESULT _stdcall a_method( [in] long *arg1, [in] BSTR arg2, [in] IAnObject *arg3 ); 在我的服务器实现此方法时(使用C++),我可以编写: *arg1 = 20; ar

正确清理CCOMSA射线<;变体>;

鉴于: { 库姆萨雷; 变异ccv(L“测试”); sa.添加(ccv,正确); } 我希望CComSafeArray的dtor会对每个包含的成员调用::VariantClear,文档似乎表明: 在某些情况下,最好在不调用VariantClear的情况下清除代码中的变量。 例如,您可以将VT_I4变体的类型更改为其他类型,而无需调用此 功能BSTR的安全数组将在每个元素上调用SysFreeString而不是VariantClear。 但是,如果收到VT_类型但无法处理,则必须调用Variant

是COM服务器a';服务器';?

为什么COM服务器被称为“服务器” 服务器通常是运行在机器上的进程,它响应来自客户端的请求 COM“服务器”只是可由正在运行的进程调用的已编译代码文件。它们不应该被称为服务器。从技术上讲,“服务器”只是一个提供服务的程序。因此,在COM中,您有客户机和服务器。当然,今天我们认为HTTP/REST/SOA/micro服务等等,但是COM早在那之前就已经存在了,甚至在“网络”(甚至不说网络间/互联网)这样的明显概念还没有出现之前 让我们引用官方文件: COM客户机是任何代码或对象都可以获得指向COM

AHK COM在保存时通过文件路径传递变量

我想使用用户在开始时输入的变量样式将文件另存为 我还需要帮助将数据发送到具有可变份数的打印机 从这里开始,我需要帮助: ComObjActive("Word.Application").ActiveDocument.SaveAs("L:\10. 2016\TKT Issued\"%Style%") 请看下面的代码,我已经有了 #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releas

Com RDOFolder对象的性能较慢

我正在编写一个用于修改Outlook文件夹的实用程序脚本。为此,我通过COM接口(Windows脚本主机/JScript)使用v5.14 我有以下两个函数,它们为RDOFolder的所有子文件夹获取一些信息数组: //枚举RDOF文件夹的所有子文件夹 函数getFolderList(rdoFolder){ 如果(!rdoFolder)返回; 返回foldersToArray(rdoFolder.Folders).map(getFolderDetails); } //找出有关单个RDOFolder

Com 在MIDL中引用完整路径的ImportLib

我发现使用这种语法,我会得到一个编译错误: importlib("MSADDNDR.dll"); 给出的错误是: error MIDL2337 : unsatisfied forward declaration : _IDTExtensibility2 [ Coclass '_Extension' ] 但那是一种谎言。在前面的输出中,我们看到: warning MIDL2015 : failed to load tlb in importlib: : MSADDNDR.dll 因此,如果

Com 有人能帮我从c#dll处理vb6中的事件吗

我发现了一个不错的NFC读卡应用程序,它在winforms中运行得非常好 可在此处找到代码: 吉特: 但我有个问题。我现在需要在com for vb6中实现这一点 我必须“复制”事件挂钩,如下面的代码所示 我成功地向vb6公开了方法和事件 NFC = new NFCReader(); NFC.CardInserted += new NFCReader.CardEventHandlerDelgate(Card_Inserted); NFC.CardEjected += new NFCReade

上一页   1   2    3   4   5   6  ... 下一页 最后一页 共 30 页