3

指定したアイテム(フォルダとファイル)のプロパティウィンドウを表示する必要があります。

プロパティウィンドウを表示する1つのアイテムは、非常に簡単です。.lpFileフィールドを設定するだけです。しかし、いくつかのアイテムのプロパティウィンドウを表示する方法を取得できません。

1) "" file1.txt ""file2.txt""などの.lpFile内のファイルの列挙は機能しません。ファイルリストが大きすぎる可能性があるため、機能しても適用できません。

2)PIDLIST_ABSOLUTEを介して作業しても、結果は得られませんでした。ILCreateFromPathを介して単一ファイルのPIDLIST_ABSOLUTEを作成できますが、複数のPIDLIST_ABSOLUTEを1つにマージすることはできません。

誰かが回避策を持っていますか?任意の回答をいただければ幸いです

PS:最近理解したように、PIDLIST_ABSOLUTEは一意です-具体的な一意のオブジェクト用に作成されます。したがって、2つ以上のPIDLIST_ABSOLUTEを連結できませんでした。しかし、問題はまだ現実です。

4

2 に答える 2

0

IShellFolder :: GetUIObjectOfを呼び出し、複数のpidlsを渡し、IContextMenuを要求してから、「プロパティ」動詞を呼び出します。– Raymond Chen

ありがとう、レイモンド。できます!

于 2012-10-30T08:26:58.097 に答える
0

デルファイで最も簡単な方法:

IExplorerBrowserまたはクリップボードからDataObjectを取得します

 if (OleGetClipboard(LDataObject) = S_OK) then
    SHMultiFileProperties(LDataObject, 0);

それ以外の場合は、動詞「プロパティ」を使用します。

function TExplorerFrame.DoVerb(Verb: AnsiString): Boolean;
var
  LFolderView: IFolderView2;
begin
  Result := False;
  if Supports(FCurrentShellView, IID_IFOLDERVIEW2, LFolderView) then
  begin
    if Verb = 'default' then
      Result := (LFolderView.InvokeVerbOnSelection(nil) = S_OK)
    else
      Result := (LFolderView.InvokeVerbOnSelection(pAnsiChar(@Verb[1])) = S_OK);
  end;
end;
于 2013-12-10T16:15:31.640 に答える