
У меня есть папка, которая отображается в проводнике Windows как:
Внутри этой папки скрытый файл desktop.ini имеет следующее содержимое:
[.ShellClassInfo]
[email protected],-12688
IconFile=%SystemRoot%\system32\mydocs.dll
IconIndex=-101
На самом деле это mydocs.dll
содержит именноДВАиконы, гдевторойодин — это значок, используемый проводником Windows для отображения указанной выше папки.
Так разве последняя строка содержимого desktop.ini не должна быть IconIndex=1
(предположим, что Windows начинает отсчет с 0) вместо IconIndex=-101
?
Я пытался интерпретировать -101
значение как двоичное, шестнадцатеричное, восьмеричное, но ни одно из них не преобразовывалось в число, которое представляло бы второй значок.
Итак, как же -101
значение указывает на ВТОРОЙ значок в mydocs.dll
?
решение1
Отрицательное значение IconIndex относится к обратному значениюИдентификатор ресурса. Видетьэтот блог разработчиков Microsoft:
В Windows 95 функция ExtractIcon была улучшена таким образом, что теперь можно было также указать значок по его идентификатору ресурса, передав его отрицательное значение в качестве индекса значка.
Смотрите такжеДокументация Майкрософт.
В вашем случае используемый значок имеет идентификатор ресурса:101и поэтому он показан как-101. После проверки моего собственного mydocs.dll, он показывает, что идентификатор ресурса равен 101 для отображаемого вами значка и идентификатор ресурса: 100 для первого значка (папка с документом).