Размещение значка на рабочем столе Programatic

Принятый ответ кажется приемлемым, за исключением того, что CodeAnalysis / FxCop будет жаловаться на тот факт, что он перехватывает общий тип исключения.

Кроме того, кажется, что оператор is может слегка ухудшить производительность.

CA1800: не приводите без необходимости говорит «подумайте о проверке результата вместо оператора as», но если вы сделаете это, вы будете писать больше кода чем если вы поймаете каждое исключение в отдельности.

Во всяком случае, вот что я хотел бы сделать:

bool exThrown = false;

try
{
    // Something
}
catch (FormatException) {
    exThrown = true;
}
catch (OverflowException) {
    exThrown = true;
}

if (exThrown)
{
    // Something else
}

5
задан ivan 22 June 2009 в 18:32
поделиться

6 ответов

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

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

5
ответ дан 14 December 2019 в 04:45
поделиться

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

1
ответ дан 14 December 2019 в 04:45
поделиться

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

1
ответ дан 14 December 2019 в 04:45
поделиться

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

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

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

1
ответ дан 14 December 2019 в 04:45
поделиться

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

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

Код В Project есть ряд статей о программировании и расширениях оболочки.

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

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

0
ответ дан 14 December 2019 в 04:45
поделиться

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

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

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

0
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: