2

I'm trying to create a Windows 7 taskbar replacement. Builtin taskbar has some nice features which I'd like to reimplement, specifically a progress bar hosted in a taskbar button (ITaskbarList3).

Since other applications communicate with system taskbar by obtaining its interface instance by calling CoCreateInstance(CLSID_TaskbarList, ...) I need either to replace COM-object CLSID_TaskbarList or setup some sort of hook for ITaskbarList3::SetProgressValue and ITaskbarList3::SetProgressState to be able to show progress on my own window. Any ideas how to do this?

(It's not the same as that)

Community
  • 1
  • 1
  • Found some [magic](http://www.codeproject.com/Articles/14040/Hooking-a-DirectX-COM-Interface) but still looking for better solution. – Doris Boyce Oct 26 '12 at 20:25
  • 1
    Since all apps have you go through `CoCreateInstance()` to reach `ITaskBarList` and descendants, simply create your own COM object that implements the `ITaskBarList` interfaces as needed and then register it using the existing `CLSID_TaskbarList` class ID. What's so hard about that? If you ever want to uninstall your COM object, you better remember Microsoft's original class ID so you can restore it later. – Remy Lebeau Oct 27 '12 at 04:58
  • @RemyLebeau Thank you for your reply. I think the replacement of system COM-server is generally not a good idea. More over I'd like to minimize registry "intervention" and i'd like to have an ability to coexist with system taskbar if possible. At the moment I'm looking into hooking CoCreateInstanse with [EasyHook](http://easyhook.codeplex.com/) – Doris Boyce Oct 28 '12 at 08:42

0 Answers0