I was toying with an IRC client, integrating it with the windows 7 app bar.
To get a “Frequent” or “Recent” items list one has to call SHAddToRecentDocs API.
I want to add recent IRC channels visited to the Windows 7 Jumplist for the IRC application.
Now, my problem is, IRC channels don’t exist in the file system. And SHAddToRecentDocs seems to insist on getting some sort of file system object.
Ive tried to work around it by creating a IShellItem pointing to my application, and giving it a command line to launch the channel. The shell is rebelling however, and thus far has not visibly added any of my “recent document” attempts to the Jumplist.
Is there no way to do this without creating some kind of entirely unwanted filesystem object?
The code in the answer to question 1671793 goes part of the way. You want an
IShellLinkinstead of anIShellItem. I tried that code bit by bit. Things wouldn’t work before using theIPropertyStoreto set the title. TheIPersistFilecode doesn’t seem to be necessary.All of that said, while I now have items appearing when I right-click on my app’s taskbar icon, I don’t yet have them appearing as a sub-menu of my app on the start menu (as word docs do, for example), so I’m not yet entirely satisfied. I think this is a result of the warning in the docs for
SHAddToRecentDocs:Here’s my code as it stands. I’m jumping through some hoops as my development environment is using an older Windows SDK (so I have to create PKEY_Title for myself) and my app needs to support Win2k (so I don’t want to bind to functions like
InitPropVariantFromStringwhich require newer Windows versions).