com

COM Add-in for Excel doesn't load when Excel is launched by opening file

Several users have reported that if they launch Excel by double-clicking an Excel file, the add-in will not load. But, if they open Excel via the Start menu (or Quick launch toolbar) the add-in loads fine. Some details, in case they help: It is a COM add-in, written in VB6. The problem has been reported on Windows XP/Excel 2003 and Vi...

Why is my DLL failing to register?

I am building a project in VS2005 and several of my DLLs are failing to register. The error message I am getting in Visual Studio is: Project : error PRJ0019: A tool returned an error code from "Registering ActiveX Control..." which is nicely vague. When I register the DLL manually through the command line (using regsv32.exe, I g...

Have iTunes inform me when I programmatically sync iphone using COM

I've written an application that synchronizes calendar from Lotus Notes to the iphone (using MS Outlook as conduit) and I want to tell iTunes to push the changes onto the iphone. I can do this just fine using the COM interface (IITIpodSource.UpdateIpod) but the problem is that this method return immediately when it starts the synchroniz...

Detecting if a COM object is registered or instantiated (iTunes)

I'm working with the iTunes COM API on Windows. I'd like to manage the enormous delay that occurs when instantiating the iTunes object (which has to launch iTunes itself). I was hoping there was a way to determine the following: if a given CLSID is registered on the system (programatically) if an instance of a given CLSID is already cr...

Is it safe to call an RCW from a finalizer?

I have a managed object that calls a COM server to allocate some memory. The managed object must call the COM server again to free that memory before the managed object goes away to avoid a memory leak. This object implements IDisposable to help ensure that the correct memory-releasing COM call is made. In the event that the Dispose m...

Convert COM object to .Net Object

public int Set(int newValue,Object obj) { //System.Windows.Forms.Control ctrl = (System.Windows.FormsControl)Object; } The Object here is COM object. Now I want to convert it to some .Net object and get hold of it's properties. What is the easiest way to do it? ...

Reg Free COM - Problem Isolating COM Reference

So I have a registration free VB6 DLL referenced by my .NET 3.5 assembly library that's ultimately referenced by a .NET 3.5 WinForms application (not sure it's relevant, but included to paint a picture). I am getting the error 'Problem isolating COM reference 'SomeVBDll': Registry key 'HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{dd1d7f5...

Differences between [in, out] and [out, retval] in COM IDL definitions

In some of the IDL I work with I have noticed that there are 2 conventions for marking return values in methods - [in, out] and [out, retval]. It appears that [in, out] is used when there are multiple return values, for example: HRESULT MyMethod( [in] long InputParam, [in, out] long* OutputParam1, [in, out] long* OutputPa...

C# Monitor.Wait and VB6 message pumping and events.

I have a com callable wrapper written in C#. The wrapper uses a Socket internally to SendAsync and ReceiveAsync. In order to make this appear synchronous to the VB6 code that calls this wrapper, I use Monitor.Wait. I can't figure out if Monitor.Wait pumps messages while it blocks. According to cbrumme's blog over on MSDN - I mentio...

Redirect hwnd GDI calls to system memory bitmap?

I have a 3rd party ActiveX control I want to render within other presentation technologies (Direct3D and WPF). To do this, I need the ActiveX to render to a system memory bitmap instead of the screen. I know there is a way to do this, but not sure where to start. I'm not afraid of doing any native method hooking, but I'm not sure wher...

How do I know the .exe that loaded my dll is about to exit?

I have a dll which is actually a com service that is registered and then being loaded by another .exe process. I would like when the user exit from the .exe to execute some resource closing steps from within my dll before it is too late. I tried to intercept the DLLPROCESSDETACH or DLLTHREADDETACH from the DllMain of my DLL but it seems ...

Where can I find a list of well known COM object GUIDS.

I was trying to get some unit tests to work when I got an error similar to: Retrieving the COM class factory for component with CLSID {BA3D0120-E617-4F66-ADCA-585CC2FB86DB} failed due to the following error: 80040154 The resolution was to install Blackberry Desktop manager, and it was simple to intuitively figure it out becaus...

Is there a way to decrease overhead associated with out-proc COM calls?

Our program consumes an out-proc COM server and makes thousands of calls on its interfaces. This takes very very long time - like a minute for about 50k calls. The COM component vendor says that the calls are very fast by themselves and that the problem is in the overhead associated with out-proc calls. Is there anything that can be tun...

How do I prevent programmatically the "Program Compatibility Assistant" in Vista (and Windows 7) from appearing?

I develop a C++ program which might use adobe flash, although it is not essential. I use CoCreateInstance to create the flash object, and if it fails, I know flash is not installed so I don't use it. However, in Vista (and I think Windows 7 as well), when flash is not installed, after leaving the application, the "Program Compatibility A...

CComBSTR memory allocation

I have a "const char* str" with a very long string. I need to pass it from a cpp client to a .Net COM method which expects BSTR type. Currently I use: CComBSTR bstr = str; This has the following issues: Sometimes this line fails with out of memory message When I pass the bstr to the COM class it takes a lot of memory (much more than...

Best way to pass char* to .Net

I want to pass a big char* from cpp to .Net (preferably using COM). What is the best way (in terms of memory)? If I use CComBSTR it takes a lot of memory both when creating the BSTR in CPP and especially when moving it to .Net inside the COM call. ...

PHP, calling a ADO object method that has optional parameters

I've almost got a basic set of helper functions done for accessing ADO through PHP. I'm running into a problem when trying to execute a stored procedure with the adExecuteNoRecords option set for $cmd->Execute(,,adExecuteNoRecords); I've tried null's for the first two parameters, new VARAINT(), new VARIANT(null), new VARIANT(VT_EMPTY), ...

COMException when using Windows API Code Pack

I downloaded Windows® API Code Pack for Microsoft® .NET Framework from http://code.msdn.microsoft.com/WindowsAPICodePack/Release/ProjectReleases.aspx?ReleaseId=3077 ERROR On testing the solution on VS 2008,I get error in line IKnownFolderManager knownFolderManager = (IKnownFolderManager)new KnownFolderManagerClass(); knownFolderMan...

DLL self-registration: how to register just for the current user?

I'm using Visual C++. I'd like to really only have the DLL registered for the current user, even if the users is an administrator. For that reason, I changed all of the project.rgs references to HKCR. But, using Process Monitor while using regsvr32 to register the DLL, I notice that it still tries to create HKCR\TypeLib\{ ... }. This ha...

Cross platform COM development ...

COM as we know is language and platform independent standard, but all the time I see only articles on developing COM components on Windows. Could you share your thoughts on how to develop a true cross-platform application. ...