草庐IT

windows - Hook Windows COM 运行时

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。是否有可用的工具来挂接WindowsCOM运行时?我希望能够看到所有创建的实例,查看对其接口(interface)的查询、方法调用等。谢谢!

c# - 在 C# 中创建一个文件并将其作为 IntPtr 传递给 COM 对象

我正在使用C#中的一些COM对象,其中之一有一个名为SetLogFile的函数,它接受一个IntPtr。如何在C#中创建文件,然后将其作为IntPtr传递给该COM函数?编辑:该函数需要一个打开的文件句柄:http://msdn.microsoft.com/en-us/library/aa915939.aspx 最佳答案 对于必须作为"file"传递的内容,您有点含糊——如果您有一个FileStream,您可以将FileStream.Handle作为IntPtr传递(假设它期望一个HANDLE值)参见“Howtopassparame

windows - 如何使用 Win32 API 与 com 端口 (RS232) 通信

我正在尝试使用win32API与com端口通信我找到了这个http://www.robbayer.com/files/serial-win.pdfhSerial=CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);我使用VS2008,它提示错误C2664:“CreateFileW”:无法将参数1从“constchar[5]”转换为“LPCWSTR”好吧,我猜它不喜欢“COM1”是char*类型,我尝试将其转换为LPCWSTR("COM1"),然后编译没有问题。但是

windows - 免费注册 (Regfree) COM

我们使用COM对象自动化模型使我们的应用程序可供客户使用。他们大部分时间使用python来访问我们的应用程序界面。由于我们希望能够安装(尚未运行,这是另一个问题)应用程序的不同版本,我们正在将我们的COM组件更改为regfree。但这与脚本语言通过IDispatch自动化的访问冲突,因为它们需要注册表中的条目。我们的方法是创建一个应用程序来管理我们实际应用程序的事件版本。它让用户决定他想要的版本并负责注册表项。我们的方法有哪些替代方案? 最佳答案 COM中有一个协议(protocol)可以执行此操作。如果您对接口(interface

c++ - 为什么通过同一个 COM 对象的不同接口(interface)检索到的 IUnknown* 指针具有相同的值?

我有以下COM接口(interface)层次结构和一个实现它们的类:interfaceIX:publicIUnknown{};interfaceIY:publicIUnknown{};classCA:publicIX,publicIY{};这里classCA有效地继承自IUnknown两次。我们知道在classCA中有两个vtable指针-一个指向IX,另一个指向IY。所以IX子对象中存储的IUnknown与IY子对象中存储的IUnknown是不同的。然而,当我们在同一对象上调用IX::QueryInterface()或IY::QueryInterface()并查询IUnknown时,

windows - 如何在 Windows Azure 中安装和使用 COM 对象?

我有很多要在WindowsAzure计算服务中运行的32位C++代码。该代码已打包到COM服务器中,因此我想从将为外部请求提供服务的托管代码中使用该服务器。我用谷歌搜索但找不到有关如何在WindowsAzure下部署COM服务器的任何详细信息。我怎么做?有向导吗?有什么限制? 最佳答案 我认为您可以将COM对象部署为二进制文件,然后使用启动脚本注册它们-参见http://msdn.microsoft.com/en-us/gg433178-“练习2:使用启动任务注册COM组件” 关于win

c# - 如何获得 com+ 应用程序的所有 com+ 组件的列表?

我正在尝试使用C#和ASP.NET来处理COM+。我一直在关注example,但是它的一部分失败了。dynamicoCatalog=Activator.CreateInstance(Type.GetTypeFromProgID("ComAdmin.COMAdminCatalog"));/*GettheApplicationscollectionandpopulateit*/dynamicapplicationInstances=oCatalog.GetCollection("Applications");applicationInstances.Populate();foreach(d

windows - 为什么我不需要在 COM 线程内创建的线程中调用 CoInitialize?

为了学习多线程,我在COM线程(TRemoteDataModule)中创建了一个线程。这是我的组件工厂:TComponentFactory.Create(ComServer,TServerConn2,Class_ServerConn2,ciMultiInstance,tmApartment);在线程内,我不需要调用CoInitialize来使用TADOQuery.Create、.Open....Exec我读到IneedtoinitializetheCOMlibraryonathreadbeforeyoucallanyofthelibraryfunctionsexceptCoGetMal

.net - 非 COM、非 .NET DLL 的正确名称?

在Windows世界中,什么是正确的名称。具有导出函数的老式C++DLL?不是COMDLL,也不是.NETDLL。我们以前通过调用LoadLibrary()和GetProcAddress()来调用的DLL类型?我一直称它们为“平面DLL”,因为调用者无法从DLL中实例化对象,但正确的名称是什么?编辑感谢您的回答。“DLL”在技术上可能是正确的,但在我工作的地方,每个人都认为“DLL”是指COM,或者可能是.NET,所以我需要一个能够准确区分我的意思的术语。 最佳答案 一个.dll?所有这些其他的东西都使用.dll提供的基本功能来完成

windows - COM 服务器 DLL 依赖项的搜索规则

考虑Windows上的以下文件组织:[appfolder]app.exe[folder'sub']com_server.dllregular.dllhelper.dll还假设以下情况:com_server.dll和regular.dll都静态链接到helper.dll中的函数,因此helper.dll在加载时加载。app.exe没有静态依赖。com_server.dllCOM对象已在Windows中注册文件夹“sub”不在系统路径中。考虑以下情况:app.exe调用LoadLibrary("sub/regular.dll")。这将失败,因为Windows将无法找到helper.dll,