程序化桌面图标放置

时间:2009-06-22 18:32:09

标签: winapi macos gnome kde

我正在寻找一种以编程方式获取/设置桌面上的图标位置的方法。 显然,有一些“状态”存储在某个地方。 有人知道吗?

我试图在任何平台上获得概念证明,所以如果你知道如何在gnome,KDE或Mac OS上的XP上做这件事,我真的很想听听它。

6 个答案:

答案 0 :(得分:5)

从这里开始:http://msdn.microsoft.com/en-us/library/bb773177(VS.85).aspx

不幸的是,这是一个非常讨厌的API,因为shell中的每个对象都被称为PIDL的东西所识别,这是由撒旦自己创建的,以混淆任何试图避免访问冲突和内存泄漏的人。

答案 1 :(得分:1)

普通文件和文件夹的位置存储在隐藏的.DS_Store文件中,该文件存在于任何目录中 Mac OS X上的音量图标位置似乎存储在Finders .plist(〜/ Library / Preferences / com.apple.finder)中。

答案 2 :(得分:1)

这里的很多答案都说在Windows中做这种事情很难做到。我怀疑这不是偶然的。如果您从未阅读过Raymond Chen的博客The Old New Thing,我建议您这样做。陈先生经常讨论通过编程访问诸如放置图标之类的事情而发生的陷阱和滥用。

修改:以下是一些关于允许Windows中的程序化访问的评论。

虽然你可能无法做到这一点(至少在Windows上),但这并不意味着它无法完成。我只是要求你本着善良而非邪恶的精神去做。

答案 3 :(得分:1)

对于遵循freedesktop.org规范的桌面(无论它们有多么有缺陷),相关文档似乎是here;但是,它没有说明任何关于立场的事情。

答案 4 :(得分:0)

在过去的几年里,我曾尝试过几次这样的事情, 它看起来像是一件微不足道的事情(它适用于AmigaDos工作台), 但是对于Windows shell的编程很难看; 实际上在Windows API中编程是很丑陋的。这是一个可怕的混乱。 准备好一堆头发拉和心痛。

不要劝阻你,但MicroSoft认为它知道它最好 在文件夹视图中的图标放置,我发现很少 实现'永久'图标放置(即图标视图远非永久性)。 MSDN文档在这方面提供的帮助很少(至少没有例子)。 我研究的最后一件事是写一个shell扩展来记录和恢复 图标位置(我不会在注册表中记录这些,我只是在文件夹的desktop.ini文件中存储位置,但在用户的私人设置文件夹中创建文件可能会更好。)

Code Project有很多关于shell编程和扩展的文章。

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

我最终用漂亮干净的纯C ++编写自己的小shell 这完全符合我的申请。

答案 5 :(得分:0)

在GNOME中,Nautilus将图标和其他内容的位置存储在〜/ .nautilus / metafiles中。

那里的文件有丑陋的文件名,因为它们实际上是转义的URI。例如,我桌面图标的元数据位于〜/ .nautilus / metafiles / file:%2F%2F%2Fhome%2Ffederico%2FDesktop.xml

但是,没有公共接口可以访问或修改该数据。您当然可以自己解析文件并进行修改,但是在下次重新启动Nautilus之前更改不会生效。