2013-02-10 4 views

答えて

4

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関数を使用してこれを処理することをお勧めします。

+0

GUIDは文字列として与えられます。 Stringtoguidを使用して文字列をGUIDに変換してから、SHGetKnownFolderPathを呼び出すことはできますか? – user382591

+1

これを実行できますか? –

0

パスがすべてのシステムで同じであるという保証がないのであなたが知られているフォルダIDとパスの配列を構築することはできません。既知のフォルダの既定のパスはありますが、既定のパスであり変更することができます。多くの企業環境では、たとえば、ユーザーのドキュメントフォルダを簡単にバックアップできるネットワーク共有に移動するなどの目的でこれを実行します。

いずれにせよ、あなたが提供されるリンク内のリンクは、あなたが必要なすべての情報が含まれています

SHGetKnownFolderPathは知られているフォルダのパスを返します勝利のAPI関数です。 CoTaskMemFreeを呼び出すことによって返されたUnicodeのcharポインタを解放する必要があることに注意してください。

COMオブジェクトの操作を優先する場合は、代わりにIKNOWNFOLDERを使用できます。

関連する問題