VC2008を使っています。
COMについて勉強しているところなのですが、
ParseDisplayName()にマイ コンピュータという文字列を渡しても
エラーになってしまい、ITEMIDLISTが取得できません。
SHGetSpecialFolderLocation()にCSIDL_DRIVESを渡すことで
マイ コンピュータのITEMIDLISTは取得できるのですが、
マイ コンピュータという文字列からITEMIDLISTを取得したいです。
1.OSはなんですか?
2.どうやって得た IShellFolder の ParseDisplayName を呼んでいますか?
3.デスクトップ上に マイ コンピュータ はありますか?
aetosさん、返事ありがとうございます。
1.XPです
2.SHGetDesktopFolder()で取得したIShellFolderです
3.あります
よろしくお願いします。
うーん…無理っぽいですね。
IShellFolder::ParseDisplayName に渡すことができる文字列は、
IShellFolder::GetDisplayNameOf に SHGDN_FORPARSING を渡して得ることができるもの
に限られると思われます。
マイ コンピュータの場合は
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
でしょうか(この文字列をアドレスバーに打ち込むとマイ コンピュータが開きます)。
そもそも、マイ コンピュータの名前は変えられますし、名前が重複していてもかまいま
せん(デスクトップ上に「ごみ箱」がある状態で、マイ コンピュータの名前を「ごみ
箱」にすることはできます)から、名前だけではオブジェクトを一意に識別できないの
でしょうね。
aetosさん、ありがとうございました。
> 名前だけではオブジェクトを一意に識別できないのでしょうね。
そうみたいですね。
アドレスバーに「ご」と入れると、
「ごみ箱」が候補に出てきます。
「マイ コンピュータ」を「ごみ」に変えて、
アドレスバーに「ご」と入れると、
「ごみ」と「ごみ箱」が出てきます。
「マイ コンピュータ」を「ごみ箱」に変えて、
アドレスバーに「ご」と入れると、
「ごみ箱」だけになり、選択すると
マイ コンピュータのフォルダーが開きます。
他の方法を考えることにします。
ありがとうございました。