dポイントプレゼントキャンペーン実施中!

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

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 );
  }


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

A 回答 (1件)

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



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

\→"\\"、\\→"\\\\"
    • good
    • 0
この回答へのお礼

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

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

ご指摘どおり、文字列を渡す際はエスケープコード付きなのですが
ダメでした。

お礼日時:2008/08/25 00:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています