• ベストアンサー
  • すぐに回答を!

フォルダ選択ダイアログ:ネットワーク上の共有フォルダ初期表示方法について

  • 質問No.4258687
  • 閲覧数976
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 100% (1/1)

フォルダ選択ダイアログで、ネットワーク上の共有フォルダを初期表示する
方法についてご教示下さい。

SHBrowsForFolder を用いて
フォルダ選択ダイアログで共有フォルダを初回表示した場合、
指定フォルダを"\\PC名\共有フォルダ名"としても下記のように
ネットワーク全体までしか表示されずに困っています。

 マイネットワーク
 |
 |-ネットワーク全体
    |
    |-Microsoft Terminal Services
    |-Microsoft Windows Network
    |-Web Client Network

BROWSEINFO構造体には、
 ・ルートフォルダにマイネットワークのアイテムIDリスト
 ・コールバック関数のパラメタに指定フォルダパスのポインタ
 ・その他もろもろ
を設定し、フォルダ選択ダイアログを表示しようとしています。

なお、手動で「Microsoft Windows Network→ドメイン名→PC名
→共有フォルダ」を開く動作(フォルダツリーの『+』押下)まで行った後、
再度同じ手順でSHBrowsForFolder()をコールすると下記のように
意図した動作となります。

 マイネットワーク
 |
 |-ネットワーク全体
    |
    |-Microsoft Terminal Services
    |-Microsoft Windows Network
    | |
    | |-ドメイン名
    |   |
    |   |-PC名
    |      |-共有フォルダ
    |
    |-Web Client Network

コールバック関数内では、ダイアログが最初に表示される直前のみ
指定されたフォルダを表示するように処理を行っています(つもりです)。

  // 初期化時にフォルダを選択させます。
  if( uMsg == BFFM_INITIALIZED )
  {
   // lpData=BROWSEINFO構造体で指定したフォルダパス
   // ※文字列のアドレスです。
   ::SendMessage( hwnd, BFFM_SETSELECTION, TRUE, lpData );
  }


ネットワーク上の共有フォルダを初期表示させるには
一度共有フォルダ配下にアクセスが必要なのでしょうか?
ご教示のほどよろしくお願い致します。

質問者が選んだベストアンサー

  • 回答No.1
  • ベストアンサー

ベストアンサー率 35% (166/466)

> 指定フォルダを"\\PC名\共有フォルダ名"としても下記のように

試していないのでできるかどうか自体も分かりませんがひとつだけ
気になったのはCソースの文字列定数内ではバックスラッシュを
エスケープしないとちゃんとバックスラッシュとして認識されませんよ。

\→"\\"、\\→"\\\\"
お礼コメント
oni9

お礼率 100% (1/1)

ご連絡が遅れまして申し訳ございません。
ご指摘ありがとうございます。

> エスケープしないとちゃんとバックスラッシュとして認識されませんよ。
> \→"\\"、\\→"\\\\"

ご指摘どおり、文字列を渡す際はエスケープコード付きなのですが
ダメでした。
投稿日時:2008/08/25 00:13
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

ピックアップ

ページ先頭へ