Shell interfaces compatibility problem

there's a compatibility problem between DOpus and other applications: when you right-click on a file/folder, you display a context menu. The problem is how DOpus calls initialization routine for shell extensions. Our shell extension handler is defined as: STDMETHODIMP CShellExtension::Initialize( LPCITEMIDLIST pidlFolder, LPDATAOBJECT pDO, HKEY hKeyProgID ). When DOpus calls this function, it doesn't pass hKeyProgID parameter (it's NULL). Could you please fix it? It's important to know which filter (*, Folder, ...) invoked the handler. Please compare how shell32.dll calls these handlers against your code (see MSDN help: ... 85%29.aspx).

Petr Kurtin
ALWIL Software

Couple of questions:

[ul][li]Which version of Opus are you seeing this with?

[li]How are you triggering the context menu? (i.e. What are you right-clicking when hKeyProgID is NULL.)[/li][/ul]

I just tried a test shell extension against both Windows 2000 32-bit with Opus (a few releases old) and Windows 7 64-bit with the current Opus development build.

I found that Opus passed non-NULL hKeyProgID when I right-clicked several different file types. Opus seemed to pass the same keys as Explorer, too. Perhaps there is a situation where the two do different things but Opus appears to do the right thing in general.

For example, when I right-clicked a .DLL file I got this (Explorer on the left, Opus on the right):