7

C:....\folder のようなKNOWNFOLDERID対応するパスを知りたいです。

KNOWNFOLDERIDここで見つけることができます。 http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx

win apiを使用し たい (すべての KNOWNFOLDERID とパスを含む配列を作成したくない)。

ありがとう

4

2 に答える 2

6

SHGetKnownFolderPathAPI 関数を呼び出すだけです。

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

于 2013-02-10T21:30:10.760 に答える
0

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

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

SHGetKnownFolderPathは、既知のフォルダーのパスを返す Win API 関数です。CoTaskMemFree を呼び出して、返された unicode char ポインターを解放する必要があることに注意してください。

COM オブジェクトを操作したい場合は、代わりにIKNOWNFOLDERを使用できます。

于 2013-02-10T21:24:11.920 に答える