tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルFolderBrowserDialogでフックするには?
記事No5794
投稿日: 2007/07/06(Fri) 18:35
投稿者Edward
Edwardと申します。
.NET掲示板の方へは初めて質問させていただきます。
よろしくお願いいたします。

VB6でSHBrowseForFolderを使ってフォルダ選択ダイアログを表示させる時に
コールバック関数を登録しておきフォルダを選択したBFFM_SELCHANGEDイベントで、
タイトルにパスを表示するように作ったものが有るのですが。
(VB6掲示板でもお世話になったやつです)
それをVB2003へ移植してみようかと思っているのですが。
.NETではFolderBrowserDialogクラスを使う事になるのですよね、
では、コールバック関数ってどうやって登録するのですか?

それとも、こういう場合は.NETでもAPI使うのでしょうか?

どなたか御指導下さいますよう、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: FolderBrowserDialogでフックするには?
記事No5798
投稿日: 2007/07/06(Fri) 20:09
投稿者Hongliang
理由は知りませんが、.NET のコモンダイアログ系のクラスは拡張性を持たされていません。
ので、Win32API の関数やらを使わざるをえません。

// WPF 用の FileDialog コンストラクタが protected になってたからついに来たかと思ったら、
// abstract なメンバが internal だった罠。

[ツリー表示へ]
タイトルRe^2: FolderBrowserDialogでフックするには?
記事No5996
投稿日: 2007/08/02(Thu) 16:27
投稿者Edward
Hongliang様 御意見有難う御座いました。

SHBrowseForFolderを使いフックしてみようと自力で頑張ってみましたが。
未だに解決出来ていません。

何方かコードを提示していただくか
サンプルの掲載されているサイト等を御存知の方いらっしゃいましたら
教えていただけませんでしょうか?

VB2003及びVB2005

[ツリー表示へ]
タイトルRe^3: FolderBrowserDialogでフックするには?
記事No5999
投稿日: 2007/08/02(Thu) 17:02
投稿者よねKEN
> (VB6掲示板でもお世話になったやつです)

http://hanatyan.sakura.ne.jp/vb60bbs/wforum.cgi?mode=allread&no=8353&page=270
ですよね。これでVB6では実現できたのですよね?
であれば、これが十分にサンプルとして役立つと思います。

> SHBrowseForFolderを使いフックしてみようと自力で頑張ってみましたが。
> 未だに解決出来ていません。

どんな風に改造して、どんな問題が起きているのでしょうか?
VB6での実装の中身を理解していれば、後は、
VB6でのデータ型、APIの扱い方とVB.NETでのデータ型、APIの扱い方の違いを
押さえておくことで改造できると思います。

「アンマネージDLL関数の処理」
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconmarshalingdatawithplatforminvoke.asp

「相互運用マーシャリング」
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/cpguide/html/cpconmarshalingdatawithplatforminvoke.asp

などがその辺の資料です。
といっても資料のボリュームも膨大なので、取っ掛かりとして以下のページはいかがでしょうか。
「KEN's .NET [特集6] GetPrivateProfileStringにみるAPIの使用方法」
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/special/sp06_GetPrivateProfileString.html

> 何方かコードを提示していただくか
> サンプルの掲載されているサイト等を御存知の方いらっしゃいましたら
> 教えていただけませんでしょうか?

「SHBrowseForFolder BFFM_SELCHANGED VB.NET」
でGoogleで検索すると1番目にこの質問、2番目以降に
VB.NETでのサンプルプログラムがいくつかありましたよ。

[ツリー表示へ]
タイトルRe^4: FolderBrowserDialogでフックするには?
記事No6001
投稿日: 2007/08/02(Thu) 18:32
投稿者Edward
よねKEN様 有難う御座います。

> 「SHBrowseForFolder BFFM_SELCHANGED VB.NET」
> でGoogleで検索すると1番目にこの質問、2番目以降に
> VB.NETでのサンプルプログラムがいくつかありましたよ。

おっしゃる事、ごもっともです。
自分なりに検索していたつもりなのですが。
なかなか、適当な物を見つける事が出来ないでいたのですが。

今回、以下を見つけ。これが私にはしっくりしました。
http://www.tek-tips.com/viewthread.cfm?qid=1204807&page=3

[ツリー表示へ]