掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数のドライブに存在する複数のファイルのコンテキストメニューを得るためには (ID:35198)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
タイトルの通りですが、複数のドライブにまたがる 複数のファイルのコンテキストメニューを得る方法がわかりません。 考えられるコードは書いたつもりなのですが、 どれも正解とは言えないメニューが表示されます。 理想としては、エクスプローラの検索ウィンドウの感じです。 検索されたファイルが複数ドライブに渡っており、 それらを全て選択した状態で右クリックした時のメニューが出したいです。 以下コード(一部)です。 // --- 通常(同ディレクトリの複数もしくは単数ファイル) --- filename: WideString; fileidls: array of PItemIDList; dir: WideString; diridl: PItemIDList; dirsf: TShellFolder; desktop: IShellFolder; ctm: IContextMenu; if FAILED(desktop.ParseDisplayName(0,nil,PWideChar(Directory),eaten,diridl,attr)) then Exit; if FAILED(desktop.BindToObject(diridl,nil,IID_IShellFolder,Pointer(dirsf))) then Exit; for cnt := 0 to Files.Count - 1 do begin filename := FFiles[i]; if FAILED(dirsf.ParseDisplayName(0,nil,PWideChar(filename),eaten,fileidls[i],attr)) then Exit; end; if FAILED(dirsf.GetUIObjectOf(0,Length(fileidls),fileidls[0],IID_IContextMenu,nil,Pointer(ctm))) then Exit; ↑最後のコンテキストメニューはファイルの存在するディレクトリにもらってます。 複数のドライブにまたがる場合、相対パスでも表現できないので、ItemIDListの取得すらままならない状況です。 こちらで試したコードは 1.デスクトップから、絶対パス指定でのIDList取得の後、デスクトップからコンテキストメニューの取得 2.デスクトップからマイコンピュータのIDListを取得、それをバインドし、マイコンピュータのIShellFolderを取得 そこから絶対パスを指定し、IDListを取得、同じくマイコンピュータからコンテキストメニューを取得 3.複数ファイルのうちの最初のファイルの親ディレクトリからIDListを取得(当然同ディレクトリでないものは失敗) 4.デスクトップから無名ディレクトリとしてIDListを取得、それをバインドし、IShellFolderを取得、 そこから絶対パスにてIDListを取得し、同じくコンテキストメニューを取得(実質2と同じ) 以上全て思った結果にはなりませんでした。 どなたかお教えくださると大変助かります。 よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.