(常識かもしれませんが、)
先日、SHBrowseForFolder のデフォルトパスにネットワークパスを指定するには?の質問にて、
VB6で指定のディレクトリのLPITEMIDLISTの値を取得する方法をいろいろ調べていたところ、
(VC++ならIShellFolder::ParseDisplayNameで取得できる)
K.J.Kさんから
Private Declare Function SHGetIDListFromPath _
Lib "shell32.dll" Alias "#28" _
( _
ByRef Path As Byte, _
ByRef RetPIDL As Long, _
ByRef RetAttr As Long _
) As Long
ってな関数を使う方法があるのを教えてもらいました。
#28 って何やねん!と思って調べてみたところ、「エントリポイントの序数指定」とのことでした。
つーことは、Win32APIのGetProcAddress関数もできるのかなと調べてみたところ、ちゃんのMSDNに載っていました。
(.NET FrameworkのDllImportでも同様→エントリ ポイントの指定? )
とっても勉強になりました。
だけど、こういう隠し的な関数は本当に知っていないと使えない罠。(引数やら戻り値やらが隠蔽されているので)
ちなみに、.NET FrameworkのFolderBrowserDialogでは任意(ネットワークパス含み)のルートや初期ディレクトリを設定することは
できないのかな?
追記
shell32.dllの序数28番目の関数名ですが、
SHILCreateFromPath
だそうです。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shilcreatefrompath.asp
ついでに、SHGetIDListFromPathでぐぐったときに#162ってのを見かけたが
あれも、
SHSimpleIDListFromPath
って関数名でした。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shsimpleidlistfrompath.asp
# 本当はコメントでレスしようかと思ったけど、なぜかsubmitできなかったので追記編集で。