※ ChatGPTを利用し、要約された質問です(原文:フォルダ選択ダイアログ:ネットワーク上の共有フォルダ初期表示方法について)
ネットワーク上の共有フォルダの初期表示方法について
このQ&Aのポイント
ネットワーク上の共有フォルダを初期表示する方法について教えてください。
フォルダ選択ダイアログで共有フォルダを初回表示した場合、ネットワーク全体までしか表示されずに困っています。
ネットワーク上の共有フォルダを初期表示させるには一度共有フォルダ配下にアクセスが必要なのでしょうか?
フォルダ選択ダイアログ:ネットワーク上の共有フォルダ初期表示方法について
フォルダ選択ダイアログで、ネットワーク上の共有フォルダを初期表示する
方法についてご教示下さい。
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 );
}
ネットワーク上の共有フォルダを初期表示させるには
一度共有フォルダ配下にアクセスが必要なのでしょうか?
ご教示のほどよろしくお願い致します。
お礼
ご連絡が遅れまして申し訳ございません。 ご指摘ありがとうございます。 > エスケープしないとちゃんとバックスラッシュとして認識されませんよ。 > \→"\\"、\\→"\\\\" ご指摘どおり、文字列を渡す際はエスケープコード付きなのですが ダメでした。