草庐IT

com_create_guid

全部标签

启动应用程序时 C# Windows 服务 COM 异常 80080005

我创建了一个尝试启动应用程序(在本例中为CATIA)的Windows服务。我使用以下代码:privateApplicationGetApplicationObject(stringProgId){ApplicationAppObject=null;//TrytogetallreadyopeninstanceoftheApplicationtry{AppObject=(Application)Marshal.GetActiveObject(ProgId);}catch{//CreateanewinstanceoftheApplicationinsteadAppObject=(Applic

c++ - 如何从 Windows 库的 GUID 获取 PIDL?

如何从库的GUID获取库的PIDL?例如,如果我有文档库的GUID(“{7B0DB17D-9CD2-4A93-9733-46CC89022E7C}”),如何将其转换为库的ID列表?我以为SHParseDisplayName可以完成这项工作,但它返回“找不到文件”。请记住,我需要的是库的PIDL,而不是其默认文件夹的。这是纯C++,没有.Net。TIA编辑:这是有效的代码,来自下面的响应(没有错误检查)。guid是一个以“shell:::”为前缀的GUID字符串,例如,“shell:::{7B0DB17D-9CD2-4A93-9733-46CC89022E7C}”。IShellFolde

windows - 您可以使用 VBA 返回磁盘的卷 GUID 吗?

我看到了另一个帖子VBAOpenaUSBdeviceusingit'suniqueidinwmi海报展示了一种通过VBA和WMI获取USB设备UID的方法,但我不确定如何使用VBA从WMI中检索VolumeGUID。我想获取DeviceID,然后在可能的情况下为特定设备返回VolumeGUID(如果它与DeviceID匹配)。此帖HowtogetthevolumeGUID似乎暗示这是可能的,但它适用于C++我只是查询了错误的WMI类吗? 最佳答案 我以前用VBS来做这个,你可以减少和修改它以在VBA中使用。strComputer="

c++ - WM_CREATE 中的 InvalidateRect 不起作用

我想在窗口创建时使它无效。我怎样才能做到这一点?在WM_CREATE期间调用InvalidateRect无效。问题是我在WM_CREATE中调用SetWindowLongPtr并设置GWLP_USERDATA。WM_PAINT在USER_DATA中寻找一些指针,但我第一次收到WM_PAINT时,数据显然不在那里,所以它不会绘制我的东西。也试过这个:#defineMyDefinedMsg(WM_APP+1)//...//caseWM_CREATE://...//SetWindowLongPtr(hWnd,GWLP_USERDATA,ptr);PostMessage(hWnd,MyDefi

windows - 如何只读取 Windows COM 端口的可用数据?

我有一个串行(COM)端口的文件句柄。我需要立即读取任何可用数据,而不是等待发送其他数据。如何确定有多少数据可用?我可以调用SetCommMask(myHandle,EV_RXCHAR),然后等待一个事件告诉我一些数据可用,但这不会告诉我我现在可以使用多少无阻塞阅读。目前我正在使用CreateFile()和重叠I/O来执行我的读取,因此它们是异步的,但它们仍然会等到缓冲区被填满才能报告I/O已完成。 最佳答案 ClearCommError()函数就是您要查找的-它在COMSTAT结构中返回输入和输出队列中有多少个字符。

windows - 使用 COM/Ole/ActiveX 进行回调/事件管理

我正在为脚本语言编写nativeCOM/Ole/ActiveX包装器。我需要一些建议来实现事件/回调(比如来自Microsoft.XMLHTTP对象的onreadystatechange)我注意到一些COM对象可以通过IDispatch接口(interface)调用我的自定义对象。这是管理事件的唯一方法吗? 最佳答案 如果您要询问有关COM事件如何工作的更一般的问题(来自任何客户端,而不仅仅是对安全性等有一些特定要求的IE)以及如何公开对象的事件,那么有一个很好的CodeProject文章,UnderstandingCOMEvent

windows - 使用来自 32 位进程的 64 位 COM 对象

我正在使用在Windows上使用COM的virtualboxapi。如果您有64位操作系统,它将安装64位版本,并且64位客户端可以访问COM接口(interface),但32位客户端无法访问。有人告诉我这是COM限制,但我看到了ways使用dll32在注册表上“发布”32位接口(interface),因此64位进程可以调用这些COM服务器,但我找不到相反的方法,从32位进程访问64位接口(interface)。如果我不是很清楚,我相信这个人想要实现类似的目标:http://www.codeproject.com/Forums/1648/COM.aspx?fid=1648&df=90&

.net - 由 C# 中的 Windows 服务托管的 COM+ 组件,用于控制外部设备

我有一个用C#编写的Windows服务,它控制通过RS232连接到计算机的设备(收集数据并允许控制设备)。它被命名为DeviceService并且工作正常。现在其他应用程序通过WCF服务使用它。但现在我需要将一些功能公开为COM+组件,以便C++中的应用程序可以与此Windows服务通信(并从中获取实时数据)。(我知道可能有更好的方法来做到这一点,但这是无法更改的要求。它必须通过COM+)。问题是:当我在DeviceService中创建这样一个组件并在客户端激活它时,它看不到任何数据。例如:对于同一程序集中定义的组件,Windows服务(DeviceService)中的静态变量返回nu

c++ - COM 函数生成不会消失的线程

我正在开发一个小型应用程序,该应用程序旨在调用一些(非常多样化的)功能,遗憾的是这些功能超出了我的控制范围,并且设计的方式让我不知道何时完成了正确的用户操作。特别是其中一些会产生一个线程来完成它们的工作,最终会在未来的某个时刻死亡。所以有些是同步实现的,有些是异步实现的,我的代码不知道它会是哪一个。我的应用程序的唯一目的是启动这些任务并在完成后终止。由于目的是自动化,我预计它会在短时间内从批处理文件中调用100次,所以我不希望这个过程停留的时间超过绝对可能的时间。因为我没有可以等待的信号,我的主线程上的ExitThread()似乎是可行的方法,这样由外部代码产生的任何线程最终都会终止进

windows - 什么是 USB 设备 GUID 及其含义

查看此注册表项:[HKEY_CURRENT_USER\System\CurrentControlSet\Control\MediaProperties\PrivateProperties\DirectInput\VID_0079&PID_0011\Calibration\0]"GUID"=hex:e0,fa,66,14,00,b3,e0,11,80,01,44,45,53,54,00,00如您所见,此设备有一个GUIDkey,其中包含一些十六进制代码。我想知道什么是GUID,它的真正含义是什么,它给我提供了哪些信息以及关于它的任何其他重要信息。非常感谢任何帮助:)