Both of the above books are good. The first is easier reading,...but Don Box, "Essential COM" explains that thinking that motivated the designers.
There is an on-line book that covers a lot of the same material as both of the previously mentioned books, Inside COM+[^], to give you a idea of what COM architecture is like.
Also, there are quite a few excellent articles about all aspects of COM, reight here at The Code Project.
Ok, so I have been trawling the web to try and find an answer to this, but to no avail.
Basically, I have a DirectShow filter (well 2) which will allow me to configure a Hauppage WinTV USB adapter (though I doubt the specific filter is 100% relevant to answer the question) to use PAL (I) and to set the source as Composite In. So far, I have found ways to display a filter's property page, and to change the settings of a DMO filter, but not enumerate and change the properties of a non DMO source filter.
The reason for needing to do this is that both filter options seem to reset with Windows, meaning that our source becomes NTSC and Tuner In, rather than Pal-I and Composite In. The filters are classed as a Video Capture Source (WinTV HVR-900H Capture) and a WDM Streaming Crossbar Device (WinTV HVR-900H Crossbar), but the ability to change any property of any filter sans a GUI will be a step in the right direction
I am using a .Net wrapper to play with the filter graph through c#, but have limited knowledge of COM interop (thus the wrapper). Any answers in C++ are fine and dandy also, then I'll worry about how to convert them to C#, just in need of an example really.
I have an in-proc ActiveX control I developed myself. It does not use the standard .CAB based deployment strategy,
rather - I have my own setup program, and my own version checking via a website.
Now, imagine the following:
1. User enters the website with an old ActiveX, which is loaded.
3. User runs the setup program, but cannot upgrade the ActiveX - the OCX is locked by Internet Explorer.
Does anyone have any tips as to what I can do in such a situation?
Or, better yet, does anyone know how to force Internet Explorer to unload an OCX?
One of the basics of ActiveX (COM) is that you can have only one version of a component in a machine. When you register a newer version, the older version is automatically unregistered (leading to what is known as DLL hell).
What is your problem with restarting IE, all ActiveX controls (including those from Microsoft) are updated that way, it means there is no way to update the controls without restarting IE. Let me know if you find a way of doing it