草庐IT

com_error

全部标签

c++ - Windows COM C++ - 使用删除或释放

我想问一个简单的问题,我有一个Direct2D工厂,当我准备好清理时,我会调用delete还是使用releasemember?我看到一些教程只显式调用delete,所以我很好奇哪个更安全,除非发布成员所做的只是在后台调用delete等。`Graphics::~Graphics(){if(Factory)//Factory->Release();ordeleteFactory;if(Render)//Render->Release();ordeleteRender;} 最佳答案 释放COM接口(interface)的正确方法是在接口(

python - win32com.client.Dispatch 类标签

我正在尝试使用python连接到COM对象。更具体地说,我正在使用ASCOM标准驱动程序连接到MaxDomeII,但不知道如何引用该驱动程序。在此link作者使用“Celestron.Telescope”作为win32com.client.Dispatch实例化的参数。我的问题是如何找到这个字符串。我知道这与安装在计算机上的已安装驱动程序有关,但我不知道如何找到具体的字符串。有没有办法使用win32com.client列出COM对象?顺便说一句,在64位Windows7专业版上运行。谢谢 最佳答案 我认为不可能直接从python获取

windows - PowerShell "You must provide a value expression following the ' 调用WinSCP.com时出现/' operator"错误

我有一段代码可以将文件放入FTP服务器。看起来像这样:"C:\ProgramFiles(x86)\WinSCP\WinSCP.com"/command"openuser@myFTPServer:MyPort/MyPath/-privatekey=myprivatekey.ppk""putmyfile.txt""exit"这在Windows命令提示符下运行良好,但在PowerShell中运行相同的东西时它不起作用并返回以下错误:"Youmustprovideavalueexpressionfollowingthe'/'operator"我已经尝试了几种代码组合,但都没有奏效:1)"C:\

windows - 帮助破译这个 fatal error (Java)

Java运行时环境检测到fatalerror:EXCEPTION_ACCESS_VIOLATION(0xc0000005)atpc=0x762a76d0,pid=4072,tid=2984JREversion:6.0_26-b03JavaVM:JavaHotSpot(TM)ClientVM(20.1-b02mixedmode,sharingwindows-x86)Problematicframe:C[ole32.dll+0x376d0]错误日志:http://pastebin.com/zpBst6W1 最佳答案 第3行表示您的程序在

windows - 解释java运行时检测到的 fatal error EXCEPTION_ACCESS_VIOLATION

我今天一直在处理我的程序,今天早上它运行良好,然后我不知从哪里收到了Java运行时环境检测到fatalerror然后我引用了日志文件它创建但我不知道如何理解日志文件,有人可以帮助解释如何解决这个错误吗?我正在使用jdk7在eclipse中编程,我尝试重新安装它,但仍然收到同样的错误。这是文件的第一部分:##AfatalerrorhasbeendetectedbytheJavaRuntimeEnvironment:##EXCEPTION_ACCESS_VIOLATION(0xc0000005)atpc=0x0a4d6fc1,pid=4852,tid=5072##JREversion:7.

c++ - 如何在不同的目标平台上以编程方式巧妙地注册 32 位 COM/DLL 组件?

我曾使用以下函数在32位Windows平台(如WindowXP和Windows7)上注册我的32位COM/DLL组件。它工作正常。但是在64位Windows7上运行时,该函数无法注册成功。结果符合预期!intRegisterComponent(LPCTSTRlpszDllName){//LoadthelibraryHINSTANCEhLib=LoadLibrary(lpszDllName);if(hLib==NULL){return-2;}typedefHRESULT(CALLBACK*HCRET)(void);HCRETlpfnDllRegisterServer;//Findthee

c++ - 为什么 LogonUserW 失败并显示错误代码 183 (ERROR_ALREADY_EXISTS)

我在LogonUserW失败后立即调用GetLastError()来检查错误代码,它总是183,但我不知道为什么LogonUserW会以这样的值失败。查了msdn,发现183(ERROR_ALREADY_EXISTS)的意思是“当那个文件已经存在时无法创建文件”,那么LogonUserW会创建什么文件呢?任何人都可以在这里阐明一些问题吗?if(LogonUserW(uniUserName,uniDomainName,uniPassword,LOGON32_LOGON_NETWORK,LOGON32_PROVIDER_DEFAULT,&token)){//dosomethingwhens

.net - 识别 .NET 应用程序中的 COM 组件

我继承了一个.NET应用程序,它汇集了大约100个由两个团队构建或从供应商处购买的dll。我想快速确定给定的dll是.NET程序集还是COM组件。我意识到我可以只对每个dll单独调用ildasm并在dll没有有效的CLRheader时做一个记录,但这种方法看起来很笨拙并且难以自动化。 最佳答案 如果您想从COM端着手,在DLL中测试COM对象归结为寻找名为“DllGetClassObject”的导出。这是因为COM运行时通过调用DllGetClassObject()访问进程内COM对象。在那个DLL上。您可以使用DUMPBIN.EX

windows - COM 对象是否负责将自己的模块保存在内存中?

假设您执行以下操作:1)使用LoadLibrary加载foo.dll。2)使用GetProcAddress获取指向函数的指针。3)调用该函数,为您提供对该模块中实现的COM对象的引用。4)通过调用FreeLibrary释放foo.dll。5)在COM对象上调用方法。您是否希望第5步成功但AV没有成功?也就是说,COM对象本身是否负责(再次)调用LoadLibrary以增加Windows为每个模块保留的引用计数,以确保它不会超过模块? 最佳答案 当然不是。模块引用计数由正常的使用方法维护-你正在做的是进入运行时方案的后门。通常,您使用

windows - 跨平台 COM 开发

众所周知,COM是独立于语言和平台的标准,但我一直只看到有关在Windows上开发COM组件的文章。您能否分享您对如何开发真正的跨平台应用程序的看法。 最佳答案 我在Mac和Unix上使用COM编写代码,没有支持库。你实际上只需要C++。它基本上是一个协议(protocol)。不过,如果你真的想用跨平台的COM来写,我建议你看看https://developer.mozilla.org/en/XPCOM 关于windows-跨平台COM开发,我们在StackOverflow上找到一个类似