В настоящее время я пытаюсь реализовать Overlay Icons для Windows Explorer с помощью Visual C ++. Для этого я прочитал информацию о Microsoft MSDN (говоря, что я должен реализовать IShellIconOverlayIdentifier
), а также некоторые другие ресурсы в интернете.
Моя проблема в том, что я не могу запустить программу. Я думаю, это не проблема реализовать логику, чтобы выбрать правильные значки, когда я могу просто отображать любые значки.
Сначала я попытался создать службу Windows, но мне кажется, что я не могу реализовать интерфейс. Теперь я перешел на DLL, и больше нет ошибок компилятора, но когда я пытаюсь зарегистрироваться, он говорит, что модуль был загружен, но точка входа DllRegisterServer
не был найден. Кажется, проблема в том, что у меня нет COM-сервера, но он мне действительно нужен?
Я также нашел руководство по CodeProject.com, который также не имеет ошибок компиляции, но просто не отображает иконки без ошибок.
Итак, кто-нибудь может вкратце рассказать, как начать реализацию Overlay Icons с Visual Studio и C ++ (Service / DLL / …, какие параметры компилятора должны быть установлены, какой минимум кода мне нужен для отображения простых иконок)?
«Значки», на которые вы ссылаетесь, это значки, отображаемые в процессе проводника. Это означает, что вы являетесь гостем в другом процессе, и вы должны вести себя в соответствии с их правилами.
Если вы понимаете это, понятно, почему ваш код не будет работать в сервисе. Служба не является процессом проводника.
Если вы понимаете это, понятно, почему вы должны предоставить DllRegisterServer()
, Исследователь называет это.
Компилятор C ++ не знает о конкретных правилах Explorer.EXE. Тем не менее, вы можете сказать компилятору о IShellIconOverlayIdentifier
включив заголовочный файл, где он определен. Это скажет компилятору, что это на самом деле интерфейс COM.
Возможно, вам следует начать с простых примеров COM, прежде чем пытаться сделать что-то более сложное, например, предоставление значков другому процессу вне вашего контроля. Вы не можете скомпилировать Explorer.EXE в режиме отладки, поэтому вы видите только половину любой проблемы.
Других решений пока нет …