Я написал расширение оболочки Windows Explorer, используя VS2010 и ATL, зарегистрированное в HKLM \ Directory \ Background \ shellex \ ContextMenuHandlers, чтобы добавить мои команды в контекстное меню.
Все работает, как и ожидалось, но я хочу добавить пункт контекстного меню, который отображается, если и только если пользователь щелкнул правой кнопкой мыши на рабочем столе, например, в Windows 7 по умолчанию «гаджеты, персонализация и т. Д.».
Я пробовал это, но не работает (не совпадает):
if (GetForegroundWindow () == GetDesktopWindow ()) {
// code here
}
Есть какие-нибудь сложности с тем, как это можно сделать?
Я также попытался использовать SHGetFolderPath () с CSIDL_DESKTOPDIRECTORY и сделать _tcsicmp (), это работает, но действительно появляется, даже если каталог рабочего стола открывается в обычном окне проводника Windows, что мне не нужно.
Зарегистрируйте это под HKCR\DesktopBackground\shellex\ContextMenuHandlers
Других решений пока нет …