C:....\folder のようなKNOWNFOLDERID
対応するパスを知りたいです。
KNOWNFOLDERID
ここで見つけることができます。
http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx
win apiを使用し たい (すべての KNOWNFOLDERID とパスを含む配列を作成したくない)。
ありがとう
C:....\folder のようなKNOWNFOLDERID
対応するパスを知りたいです。
KNOWNFOLDERID
ここで見つけることができます。
http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx
win apiを使用し たい (すべての KNOWNFOLDERID とパスを含む配列を作成したくない)。
ありがとう
SHGetKnownFolderPath
API 関数を呼び出すだけです。
この関数は Vista で追加されたため、Delphi 7 に同梱されているライブラリ ユニットでは宣言されません。そのため、自分で宣言する必要があります。
type
KNOWNFOLDERID = TGuid;
function SHGetKnownFolderPath(
const rfid: KNOWNFOLDERID;
dwFlags: DWORD;
hToken: THandle;
out ppszPath: PWideChar
): HResult; stdcall; external 'Shell32.dll';
現在、この関数は Vista で追加されているため、XP で呼び出そうとすると失敗します。そのため、Vista の既知のフォルダー API ではなく、CSIDL 関数を使用してこれに対処することをお勧めします。
すべてのシステムでパスが同じであるという保証はないため、既知のフォルダー ID とパスの配列を作成することはできません。既知のフォルダーにはデフォルトのパスがありますが、それらは単なるデフォルトであり、変更できます。多くの企業環境では、たとえば、ユーザーのドキュメント フォルダをより簡単にバックアップできるネットワーク共有に移動するためにこれを行っています。
いずれにせよ、提供したリンク内のリンクには、必要なすべての情報が含まれています。
SHGetKnownFolderPathは、既知のフォルダーのパスを返す Win API 関数です。CoTaskMemFree を呼び出して、返された unicode char ポインターを解放する必要があることに注意してください。
COM オブジェクトを操作したい場合は、代わりにIKNOWNFOLDERを使用できます。