由于我安装了几十个虚拟串行(COM)端口,其中一半是蓝牙设备,我想知道哪个端口属于哪个设备,是直接连接还是通过蓝牙连接。所以特别是我对所有串行端口的简单枚举不感兴趣,它只会显示“COM”列表+相应的数字,但该设备的真实名称和可能的设备ID(其中信息可以找到关于这是通过USB还是蓝牙连接。虽然我可以通过WMI获取这些信息,但存在很多与此方法相关的问题。特别是它非常慢,而且它只列出已连接的设备(蓝牙设备除外,这些设备可能已连接并且无论实际连接如何都会显示)我更喜欢用Delphi/ObjectPascal编写的解决方案,但任何其他语言也适合我(WMI访问代码是从C#复制的)。
我们遇到了一个ratherstrangeissue使用我们的COM组件。该组件实现了一个众所周知的接口(interface),并被第三方闭源产品(以下简称产品X)使用。产品X通过Windows注册表配置-产品X读取注册表并找到我们组件的类ID。我们的组件是使用ATL在nativeC++中实现的32位进程内组件,我们将其注册到64位系统上的COM+,以便在代理进程中激活它。现在产品X无法使用我们的组件并在Windows事件日志中跟踪E_ACCESSDENIED,我们还看到以下错误消息Theapplication-specificpermissionsettingsdonotgrantLo
回到.NET1.0时代,我写了一个方法来返回MSWindows上快捷方式的目标。它通过对Windows脚本托管对象模型使用互操作并通过COM接口(interface)强制执行此操作:privateFileInfoGetFileFromShortcut(FileInfoshortcut){FileInfotargetFile=null;try{IWshRuntimeLibrary.WshShellwShell=newIWshRuntimeLibrary.WshShellClass();IWshRuntimeLibrary.WshShortcutwShortcut=(IWshRuntime
我已经使用list文件(即早期绑定(bind))使用C++和C#成功地让Reg-FreeCOM工作。我现在正在尝试使用后期绑定(bind)来使它正常工作。经过大量网络搜索后,我发现的技术似乎是在使用“Microsoft.Windows.ActCtx”。我用来对此进行测试的一个示例是MS的“基于COM的组件的免注册激活”,位于http://msdn.microsoft.com/en-us/library/ms973913.aspx。生成SideBySide示例。然后我尝试使用脚本语言;然而,VBScript和Python都以同样的方式失败(也尝试过VBA)。VBScript范例如下:Se
前提:我有一个旧的32位COMshell扩展(用C++编写)。在与更新的64位系统多年不兼容之后,我们现在正在更新它以在64位Windows环境中工作。诀窍:32位COMDLL包含对第三方库的依赖,没有可用的64位版本。因此,我们不能简单地“在64位中重新编译”。鉴于此限制,我们决定最简单的方法是创建一个“瘦”64位DLL;本质上是一个空DLL,仅定义所需的接口(interface),并将所有调用重定向到底层32位COMDLL。我相信通过使用COM代理,64位COMDLL和32位COMDLL之间的通信是可能的。不幸的是,这似乎是一个非常具体/小众的话题,而且我一直无法找到很多关于如何从
我编写/支持一个名为uCon(http://www.umonfw.com/ucon)的终端仿真器。它全部基于“good-ole”Win32,并且完全在“C”中。我最近被要求支持将uCon连接到COM端口并为RS232流量控制之外的目的设置DTR/RTS的能力。我知道我可以在使用EscapeCommFunction()和/或SetCommState()调用CreateFile()之后执行此操作;但是,这些函数只能在CreateFile()返回已打开端口的句柄后调用。不幸的是,当CreateFile()打开端口时,它将DTR/RTS设置为其默认状态,这可能(或可能不)与我希望保持DTR的状
我有一个Windows应用程序,该应用程序利用第三方工具(FaxMan)通过连接到PC的COM端口发送传真。为了对我的应用程序进行压力测试,我想创建一些虚拟COM端口,这些端口假装有传真调制解调器。然后,我想“欺骗”传真的发送,而不实际发送任何东西。虚拟COM端口将需要响应标准AT命令,就像正在发送传真一样。欺骗失败的能力将是额外的收获。我的第一个想法是使用虚拟COM端口驱动程序重定向到telnet或其他TCPsession-然后,我可以拥有一个假装通过传真Action的TCP服务器。但是,如果存在某个组件,我很乐意支付。 最佳答案
我有一个应用程序,它使用JNA从C++中的硬件抽象库调用函数。受支持的硬件设备之一需要初始化WindowsCOM子系统(通过CoInitialize或CoInitializeEx)。有人知道有什么Java库可以做到这一点吗?我知道我可以包装一些Windows函数,但如果我已经准备好并测试了一些东西,那就更好了。我找到一个叫JACOB的但是据说文档不好,上次更新已经很久了。谢谢! 最佳答案 我们使用Com4J(用于Excel等外部进程)和SWTCOMAPI(用于嵌入式GUI组件)。有的时候,我们用Jacob,就看你想控制什么控件了。有
我知道在COM对象的AddRef和Release方法内部使用互锁API来递增/递减线程安全的引用计数。但我想在这里理解的是,是否足够使用InterlockAPI,或者我们还需要某种其他同步对象,例如互斥体。到目前为止,我看到的所有示例代码都只使用了InterlockAPI。场景-假设我已经实现了消息对象的AddRef和Release方法,如下所示。假设线程A访问消息对象,因此m_lRef计数为1。一旦完成消息对象使用线程A调用Release方法内部释放方法–在第9行-m_lRef=1在第10行-m_lRef=0,lRef=0线程A在第10行暂停,另一个线程B访问相同的消息,因此它调用A
当客户端应用程序调用c_com_ptr::CreateInstance(使用ATL包装器)时,我有一个COM服务器LocalServer32EXE启动。在Windows7上,当在同一用户帐户下运行的第二个客户端应用程序也调用c_com_ptr::CreateInstance时,将启动在同一用户帐户下运行的第二个EXE副本。我的印象是,从前世开始,第二个客户将共享第一个EXE。LocalServer32进程是否共享?什么时候,什么时候不?谷歌搜索答案给了我一个巨大的噪声信号比,我找不到答案。我的CLSID注册表项的LocalServer32值给出了EXE路径、ProgID、Program