2009-06-22 294 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時,更改纔會生效。