问题标签 [regfreecom]
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.
asp-classic - ASP Classic 可以使用免注册组件吗?
如题目所说,ASP Classic 可以使用免注册组件吗?这是在 Windows Server 2003 上。如果是这样,我该怎么做?
如果没有,有人可以提供一些替代方案吗?
com - 如何使用没有 tlb 文件的进程外 COM 服务器
它是关于 Window COM 组件的。
- Server.exe:32 位进程外 COM 服务器
- CLSID_Application:Server.exe 中 COM 对象的 GUID
- Client.exe:一个 64 位客户端应用程序,它以无注册方式使用 Server.exe。
众所周知,exe 不能用作无注册表的 COM 组件,为了模仿这种行为,我通过提供确切路径自己启动 Server.exe 进程:
- CreateProcess("Server.exe")
- IClassFactory* pFactory = CoGetClassObject(CLSID_Application)
- pFactory->CreateInstance(ppAppObject);
如果我注册了 Server.tlb,它就可以工作,但是在取消注册 Server.tlb 之后,它只是无法创建 ppAppObject,即使我将清单嵌入到 Server.exe 和 Client.exe 中:
你对此有什么想法吗?
编辑:事实证明,如果我为接口指定 tlbid 并将清单嵌入到两个 exe 中,它确实有效
.net - 带有 .NET 应用程序的多平台免注册 COM
我有一个使用 COM 组件的 .NET 应用程序。应用程序本身是“Any CPU”,但 COM 组件有 32 位和 64 位版本。
文章http://msdn.microsoft.com/en-us/magazine/cc188708.aspx清楚地说明了如何为免注册 COM 做些什么。但是应该怎么做:
- “任何 CPU”应用程序
- 依赖程序集:
- Assembly1 使用 COM 组件“Foo”,foo 具有相同文件名的 32 位和 64 位版本(我们没有创建 Foo,它是由第三方制作的)。
一种可行的方法是为 32 位版本和 64 位版本创建单独的应用程序清单。这样,每个清单文件都可以包含 COM 组件的正确大小和散列。不过,我想避免这种情况。
是否有可能以某种方式在 Visual Studio 中轻松设置?是否可以有一个文件夹(带有用于 COM 组件的 x64、x86 子文件夹),应用程序将在两个平台上无缝运行?
任何指向正确方向的指针将不胜感激!我可能只是在某个地方忽略了一些简单的开关或设置。
c# - 隔离(无注册)COM 组件行为
我有一个相当尴尬的情况。
我有一个小型 COM 暴露组件(我们称之为 SmallCOM),它是一个(Delphi)win32 dll,我从托管 C# 程序集中(通过 COM)使用它。
我有一个大的 COM 暴露组件(我们称之为 BigCOM),它是一个(Delphi)win32 dll,我从同一个托管 c# 程序集中使用它(再次通过 COM)。
而“有趣”的部分是 BigCOM 还通过 COM 实例化和使用 SmallCOM。
所有这些都发生在同一个过程中,出于某种原因,我有时会遇到低级别的无法捕获的异常,告诉我(当使用 windgb 进行分析时):
我猜 BigCOM 已经完成了 SmallCOM 的工作并释放了它,使其无法从 C# exe 再次使用(并且重新加载它是不可能的,exe 是一个服务,它是高度多线程的,它使用这个 SmallCOM即使 BigCOM 正在工作)。
所以,我的问题是:在我的 C# exe 中使用独立无注册 COM 来隔离 SmallCOM 会解决这个问题吗?还是 BigCOM 和 C# exe,仍然共享相同的进程,无论如何都使用相同的 SmallCOM.dll?
提前致谢!艾蒂安。
.net - .net 调用 COM 是否在使用 SxS 和清单文件时调用其他 .net COM 对象工作
我有一个调用 COM 组件 (C++) 的 .net 应用程序,该组件又调用在 .NET 中实现的另一个 COM 对象。
此应用程序正在使用 Windows SxS 功能,并且不注册它的任何 COM 组件。不是用 C++ 编写的,也不是用 .net 编写的。
对 C++ COM 组件的第一次调用工作正常。但是,当 C++ COM 组件调用 .net 组件时,它会因未注册类而失败。
我尝试使用调用 .net 组件的清单文件创建一个小型 C++ 应用程序,并且它可以工作。似乎当流程是 .net -> COM NATIVE -> .NET COM。然后 SxS 中断并且不起作用。
查看 Fusion Logs(程序集加载日志)时,我发现甚至没有人尝试解析 .NET COM 程序集。
这个 SxS 场景是否应该有效(我认为它应该有效)?如果是,那么我做错了什么?
这些是我正在使用的清单文件。
.net 应用程序的应用程序清单(作为资源嵌入):
application.sxs.manifest(常规文件):
PerformanceMonitor 清单(作为资源嵌入 PerformanceMonitor.dll 以解决 XP 中的 .net com 错误):
.net - 为什么不能从 VB IDE (VB6 & VBA) 调用 RegFree COM 和 .NET?
我有一个示例项目,当从已编译的 VB6 调用但不是从 IDE 或 Excel 的 VBE 调用时,该项目具有作品。
有 3 个 DLL QA.DLL、QB.DLL、QAW.DLL。QA 是用 C#.NET 编写的,QB 和 QAW 是用 VB6 编写的。QAW 是 QA 的 COM 包装器。
在调用代码中,我创建了一个激活上下文并加载了一个清单文件。
从使用 VB6 创建的 exe 中一切正常,但在 VB6 或 Excel 的 VBA 中的调试模式下不行。
任何想法与 IDE 调用有什么不同以及为什么它不起作用?
visual-studio-2010 - 如何避免手动编辑清单文件
我的 VB.Net 应用程序使用独立的 activeX(外部),它依赖于另一个 activeX(内部),两者都使用无注册 com。
生成的清单文件仅包含外部 activeX 的信息。(可能是因为 vs 无法知道外部 activeX 正在使用内部 activeX )
当我重新构建我的项目时,我总是需要手动将内部activeX的信息添加到清单文件中,否则应用程序只显示外部,没有内部。
有没有办法通知visual studio(2010)我不希望它为每个构建重新生成清单文件?
谢谢,
阿塔拉
c# - 使用 Reg-Free-COM 时未发送到基于 WPF 的 ActiveX 控件(COM 互操作)的事件
我有一个基于 WPF 的 ActiveX 控件(COM 互操作)。我可以通过注册控件来正确使用它。当我尝试 Reg-Free-COM(使用清单文件)时,控件似乎已激活,但事件(如鼠标单击、RequestBringIntoView 等)没有响应。有趣的是,双击和 Tab 键有效。
我在这篇文章http://blogs.msdn.com/karstenj/archive/2006/10/09/activex-wpf-gadget.aspx中读到“……这些好处是有代价的:ActiveX 控件必须是在注册表中注册,这需要某种安装,例如 .msi。默认的小工具安装过程无法安装 ActiveX。无法通过无注册 COM 访问 ActiveX 控件。..."
有没有人有类似的经历?谁能解释发生了什么?
其他详细信息:
当控件在注册后被激活时,它会显示为 COM 客户端 UI 的一部分。控件不接收焦点,它的元素接收它。
使用 reg-free-com 时,控件无法正确加载。1)控件接收焦点而不是其子元素 2)控件具有黑色区域而不是窗口默认颜色 3)当我在控件中进出或双击它时,它的子元素接收焦点,控件启动接收事件和黑色区域被正确的颜色替换
c# - 使用免费注册 com 激活(基于 COM 互操作)ActiveX 控件
我有一个(基于 COM 互操作的)ActiveX 控件,我正在尝试将它与免注册 com 一起使用。当控件加载时,控件处于非活动状态(不响应事件、控件未完全呈现等)。
经过大量搜索,我发现使用 reg-free-com 的 COM 对象使用 miscStatus 属性来设置初始状态以正确激活。我知道如何将它与对应于本机 COM 对象的 comClass 一起使用。
1) 对应于 COM 互操作对象的 clrClass 元素的以下等效项是什么?
2) 我使用的 COM 客户端是 Visual FoxPro。如果 (1) 不可能,我可以在 VFP 中做什么来激活非活动的 ActiveX 控件。(如果我可以使用它来找到等效的 foxpro,我也不介意 VB 或 C# 输入)
目前我尝试了以下
但是我 OleControl1 在将鼠标单击等事件传递给其子元素之前获得焦点。所以我必须在它没有焦点的任何时候单击它两次以执行必要的操作。我希望控件的行为就像设置了 miscStatus 值的“nouiactivate”一样。
3)还有其他方法可以完成我想做的事情吗?
Hans Passant,这里是当前 Assembly.dll.manifest 的列表。评论中的格式使其无法阅读。
.net - Native.* assemblyIdentity with Registration-free com
我将Isolated=true 设置为一些我需要免费注册的COM 库。Visual Studio 现在为我的每个程序集创建了 Native.* 清单文件:
- 为什么是“原生”?我可以改变这个吗?有人可以指出我可以阅读的信息吗?(谷歌搜索本机/程序集/清单会产生很多不相关的信息)
- 有没有办法可以将这些清单文件嵌入到程序集 DLL 中?
谢谢!