2009-06-22 86 views
4

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

我想要得到任何平台上的概念证明,所以如果你知道如何在XP中在gnome,KDE或Mac OS上执行它,我真的很想听听它。

+0

我不认为你想在Windows中这样做。当然,这并不意味着你不可以,但它可能很难,没有证件,或者很容易破坏(见我的答案)。 – 2009-06-22 20:27:05

回答

3

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

这是不幸的是相当讨厌的API,因为在外壳中的每个对象是由一个叫做PIDL的事情,这是由撒旦自己创建混淆任何人试图避免访问冲突和内存泄漏鉴定。

+0

+1为撒旦参考 – Eric 2009-06-22 20:03:06

0

我已经试过这几次,最近几年, 它似乎是这样一个小事(这是AmigaDos工作台), ,但编程的Windows外壳是丑陋的;实际上编程Windows API中的任何东西都很难看。这是一个可怕的混乱。 准备一束头发拉动和心脏疼痛。

不劝阻你,但微软认为它最清楚,当谈到 以图标放置在文件夹视图和我发现小的方式来 实现“永久性”图标位置(IE图标的观点是远离永久) 。 MSDN文档在这方面提供的帮助很少(至少没有例子)。 我研究的最后一件事是编写一个外壳扩展来记录和恢复 图标位置(我不会在注册表中记录这些内容,我只是将位置保存在文件夹的desktop.ini文件中,但它可能会最好在用户的私人设置文件夹中创建一个文件)。

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

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

我结束了写我自己的小贝壳在干净的纯C++ 这不正是我想在我的应用程序的情况下。

1

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

1

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

编辑:以下是关于在Windows中允许编程访问的一些注释。

尽管你可能并不意味着能够做到这一点(至少在Windows上),这并不意味着它不能这样做。我只是要求你以善而不恶的精神来做这件事。

1

对于遵循freedesktop.org规范的桌面(但它们可能有缺陷),相关文档似乎是here;尽管如此,它并没有说任何有关职位的信息。

0

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

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

但是,没有用于访问或修改数据的公共接口。您当然可以自行解析文件并对其进行修改,但只有在下次重新启动Nautilus时,更改才会生效。