Программируемое размещение значков на рабочем столе - PullRequest
5 голосов
/ 22 июня 2009

Я ищу способ программно получить / установить положение значков на рабочем столе. Очевидно, что где-то хранится некое «состояние». Кто-нибудь знает здесь?

Я пытаюсь получить подтверждение концепции на ЛЮБОЙ платформе, поэтому, если вы знаете, как это сделать на XP в gnome, KDE или Mac OS, я бы очень хотел услышать об этом.

Ответы [ 6 ]

5 голосов
/ 22 июня 2009

Начните здесь: http://msdn.microsoft.com/en-us/library/bb773177(VS.85).aspx

К сожалению, это довольно неприятный API, потому что каждый объект в оболочке идентифицируется с помощью вещи, называемой PIDL, которая была создана самим сатаной, чтобы сбить с толку любого, кто пытается избежать нарушений доступа и утечек памяти.

1 голос
/ 23 июня 2009

Для настольных компьютеров, соответствующих спецификациям freedesktop.org (какими бы ошибочными они ни были), соответствующий документ выглядит как здесь ; хотя ничего не говорится о позициях.

1 голос
/ 23 июня 2009

Многие ответы здесь говорят о том, что делать подобные вещи довольно сложно в Windows. Я подозреваю, что это не случайно. Если вы никогда не читали блог Раймонда Чена The Old New Thing , я предлагаю вам сделать это. Г-н Чен часто обсуждает ловушки и злоупотребления, возникающие при программном доступе к таким вещам, как размещение значков.

Редактировать : Вот несколько комментариев о разрешении программного доступа в Windows.

Хотя вы, вероятно, не должны этого делать (по крайней мере, в Windows), это не значит, что это невозможно сделать. Я просто прошу вас делать это в духе добра, а не зла.

1 голос
/ 23 июня 2009

Положение обычных файлов и папок хранится в скрытом .DS_Store файле, который существует для любого каталога Положение значков громкости в Mac OS X, похоже, сохраняется в .plist Finders (~ / Library / Preferences / com.apple.finder).

0 голосов
/ 16 июля 2009

В GNOME Nautilus хранит положение значков и прочего в ~ / .nautilus / metafiles.

Файлы там имеют ужасные имена файлов, так как они действительно экранированы URI. Например, мои метаданные для значков на рабочем столе находятся в ~ / .nautilus / metafiles / file:% 2F% 2F% 2Fhome% 2Ffederico% 2FDesktop.xml

Однако нет открытого интерфейса для доступа или изменения этих данных. Конечно, вы можете самостоятельно проанализировать файл и изменить его, но изменения не вступят в силу до следующей перезагрузки Nautilus.

0 голосов
/ 22 июня 2009

Я пытался разобраться в этом пару раз за последние пару лет, это кажется такой тривиальной вещью (это было для верстака AmigaDos), но программирование для оболочки Windows ужасно; на самом деле программирование чего-либо в Windows API ужасно. Это ужасный беспорядок. Будьте готовы к пучку волос и боли в сердце.

Не отговаривать вас, но MicroSoft думает, что знает лучше, когда приходит для размещения значков в представлениях папок, и я нашел немного в пути реализовать «постоянное» размещение значков (т. е. представление значков далеко от постоянного). Документы MSDN предлагают небольшую помощь в этом отношении (по крайней мере, без примеров). Последнее, на что я обращал внимание - это написание расширения оболочки для записи и восстановления. положение значка (я бы не записывал их в реестр, я просто собирался сохранить позиции в файле desktop.ini папки, но, вероятно, было бы лучше создать файл в папке личных настроек пользователя).

Code Project содержит ряд статей по программированию и расширениям оболочки.

http://www.codeproject.com/KB/shell/ http://www.codeproject.com/KB/shell/shlext.aspx

В итоге я написал свою собственную маленькую оболочку на чистом чистом C ++ это именно то, что я хочу в контексте моего приложения.

...