デスクトップ上のアイコンの位置をプログラムで取得/設定する方法を探しています。明らかに、どこかに保存されている「状態」があります。ここ知ってる人いますか?
私はどのプラットフォームでも概念実証を行おうとしているので、GNOME、KDE、または Mac OS の XP でそれを行う方法を知っている場合は、それについて本当に聞きたいです。
ここから開始: http://msdn.microsoft.com/en-us/library/bb773177(VS.85).aspx
残念ながら、シェル内のすべてのオブジェクトは、アクセス違反やメモリ リークを回避しようとする人を混乱させるために Satan 自身が作成した PIDL と呼ばれるものによって識別されるため、非常に厄介な API です。
通常のファイルとフォルダの位置は、任意のディレクトリに存在する隠し.DS_Storeファイルに格納されます Mac OS X のボリューム アイコンの位置は、Finders .plist (~/Library/Preferences/com.apple.finder) に格納されるようです)。
ここでの回答の多くは、この種のことを Windows で行うのはかなり難しいと言っています。これは偶然ではないと思います。Raymond Chen のブログThe Old New Thingを読んだことがない場合は、読むことをお勧めします。チェン氏は、アイコンの配置などへのプログラムによるアクセスで発生する落とし穴や悪用について頻繁に議論しています。
編集:Windowsでのプログラムによるアクセスの許可に関するいくつかの解説があります。
おそらく (少なくとも Windows では) これを行うことができるように意図されていませんが、それができないという意味ではありません。悪ではなく善の精神でこれを行うようお願いします。
freedesktop.org の仕様に準拠したデスクトップの場合 (どのような欠陥があっても)、関連するドキュメントはここにあるようです。ただし、位置については何も述べていません。
私はここ数年、これを数回調べてみましたが、それはとても些細なことのように思えます (それは 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++ で独自の小さなシェルを作成することになりました。