原来有一个HKCR\Interface子树,我可以在其中注册我新引入的COM接口(interface)。当我得到它时,我会在两种情况下需要它:如果我想启用编码-那么我可以在那里注册代理/stub如果我想发布有关我的组件的更多信息,以便其他开发人员可以查找接口(interface)ID并在HKCR\Interface{InterfaceId}\Default值下找到它的人类可读名称。还有什么其他场景需要在HKCR\Interface注册我的接口(interface)吗? 最佳答案 可以将指向接口(interface)类型库的链接放在H
我开发跨平台桌面应用程序,最近我发现了在小部件上使用帮助文本的乐趣。然后用户在标题栏上有一个问号按钮,单击该按钮后,他可以单击窗口中的任何小部件并查看有关它的帮助文本。非常好。因为我认为所有程序都应该完全可以通过键盘使用而无需触摸鼠标,所以我发现在Windows上,F1打开具有当前焦点的小部件的帮助文本。到目前为止还不错。但是...F1几乎总是用于应用程序的帮助屏幕。所以我们发生了冲突。我应该怎么办?是否有不同的快捷键可用于打开帮助文本气球? 最佳答案 根据MicrosoftUserExperienceGuide的第233页,F1显
我有一个用VisualC++编写的COMDLL。我完全控制那个COMDLL代码。当然,它可以从托管和非托管应用程序中使用。我想插入一个非常具体的检查,该检查只应在.NET应用程序使用COMDLL时运行。我的COM对象是否有某种编程方式来检测它是从.NET应用程序还是从非托管应用程序使用? 最佳答案 这类“我的环境是什么”的问题总是有相同的答案。您的主机很容易确定它是否被管理,只需在您的界面上添加一个属性让它告诉您。与替代方案相比,这是一个微不足道的解决方案。在COM中不可能可靠地实现,有很多托管服务器的方法。
将PHP升级到v.5.5.1后出现此错误:Fatalerror:Class'COM'notfoundinC:\inetpub\wwwroot\ndsystems\database_engine\mssql_engine.phponline184mssql_engine.php文件中的第184行:$this->COMConnection=newCOM('ADODB.Connection');//line184try{$this->COMConnection->Open($connectionString);$this->RetrieveServerVersion();}catch(com
如果标题不太准确,请原谅。我在做一些与COM服务器和注册表重定向相关的事情时遇到了一些问题,我不太确定我的理解是否正确。希望任何人都可以分享一些关于它的信息。提前致谢。基本上,在任何人可以使用它的服务之前,一个COM服务器已经在注册表中注册了。在64位Windows操作系统上,注册表中可能有2个可能的View,一个用于默认View,另一个用于WOW64View。例如,第一个注册表项是:COMPUTER\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{GUID}\LocalServer32,另一个是:COMPUTER\HKEY_LOCAL_MACHIN
我有一个提供虚拟com端口的USB设备。但是,此设备不会通过COM端口“友好名称”来标识自己(例如在Windows单元管理器中)。但是它确实为USB设备提供了一个正确的名称。依次列出关联的com端口,如下所示:我希望能够通过名称(“PrologixGPIB...”)识别设备并从该名称中获取com端口号。我如何在C#/.NET中执行此操作?我能找到的唯一代码只能通过COM端口友好名称搜索,而不是USB设备名称。感谢您的宝贵时间! 最佳答案 我没有设置虚拟COM端口,所以无法检查这个,但是thisarticle中的答案之一似乎符合您的要
HANDLEhCom=INVALID_HANDLE_VALUE;hCom=CreateFileW(L"COM1:",GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);我正在尝试使用虚拟pc(WindowsEmbeddedCompact)打开计算机的COM端口。函数CreateFileW传递一个INVALID_HANDLE_VALUE。在win32上它运行完美。 最佳答案 检查HKLM\Drivers\Active下的端口名称。您可以
有没有办法通过命令提示符更改系统设置(如在我的示例中,显示/隐藏隐藏的文件夹和文件)?如果是这样,这是如何完成的? 最佳答案 要启用您提到的选项,您可以使用REGADD:regaddHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced/vHidden/tREG_DWORD/d0x1/fWindows资源管理器选项中的“显示隐藏的文件、文件夹和驱动器”等设置最常存储在注册表中。例如,这个看起来像这样:UserKey:[HKEY_CUR
将进程内COM服务器转换为进程外COM服务器的最简单方法是创建COM+应用程序。这样做可能有哪些缺点? 最佳答案 我真的想不出任何理由来创建您自己的容器或使用第3方容器(如果存在)来支持MTS/COM+。我的意思是它可以满足您的所有需求:让您选择分布COM对象到容器进程。让您配置他们的帐户跑下。监控容器处理并在必要时重新启动并且可以回收它们。甚至允许你在场景中托管STA组件你需要多线程的地方通过启动多个服务worker进程。等如果不花费6个月或更长时间,很难想象做得比这更好。 关于win
我有一个没有类型库的32位ATLCOM组件。它有一个类工厂,用于一个实现多个接口(interface)的给定类。当我将它用作进程内服务器时,一切正常-客户端调用CoCreateInstance(),对象被实例化,QueryInterface()检索指向所请求接口(interface)的指针。但是,当我将组件放入COM+时,我无法再实例化该类-CoCreateInstance()现在返回E_NOINTERFACE。我认为问题在于COM+无法执行编码(marshal)处理,因为缺少类型库-它不知道如何执行。我需要生成并注册一个类型库来解决这个问题还是有其他方法?