マイ コンピュータという文字列からITEMIDLISTを取得したい – プログラミング – Home

マイ コンピュータという文字列からIT...
 
通知
すべてクリア

[解決済] マイ コンピュータという文字列からITEMIDLISTを取得したい


弐羽
 弐羽
(@弐羽)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

VC2008を使っています。

COMについて勉強しているところなのですが、
ParseDisplayName()にマイ コンピュータという文字列を渡しても
エラーになってしまい、ITEMIDLISTが取得できません。

SHGetSpecialFolderLocation()にCSIDL_DRIVESを渡すことで
マイ コンピュータのITEMIDLISTは取得できるのですが、
マイ コンピュータという文字列からITEMIDLISTを取得したいです。


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

1.OSはなんですか?
2.どうやって得た IShellFolder の ParseDisplayName を呼んでいますか?
3.デスクトップ上に マイ コンピュータ はありますか?


返信引用
弐羽
 弐羽
(@弐羽)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

aetosさん、返事ありがとうございます。

1.XPです
2.SHGetDesktopFolder()で取得したIShellFolderです
3.あります

よろしくお願いします。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

うーん…無理っぽいですね。

IShellFolder::ParseDisplayName に渡すことができる文字列は、
IShellFolder::GetDisplayNameOf に SHGDN_FORPARSING を渡して得ることができるもの
に限られると思われます。
マイ コンピュータの場合は
::{20D04FE0-3AEA-1069-A2D8-08002B30309D}
でしょうか(この文字列をアドレスバーに打ち込むとマイ コンピュータが開きます)。

そもそも、マイ コンピュータの名前は変えられますし、名前が重複していてもかまいま
せん(デスクトップ上に「ごみ箱」がある状態で、マイ コンピュータの名前を「ごみ
箱」にすることはできます)から、名前だけではオブジェクトを一意に識別できないの
でしょうね。


返信引用
弐羽
 弐羽
(@弐羽)
ゲスト
結合: 15年前
投稿: 4
Topic starter  

aetosさん、ありがとうございました。

> 名前だけではオブジェクトを一意に識別できないのでしょうね。

そうみたいですね。

アドレスバーに「ご」と入れると、
「ごみ箱」が候補に出てきます。

「マイ コンピュータ」を「ごみ」に変えて、
アドレスバーに「ご」と入れると、
「ごみ」と「ごみ箱」が出てきます。

「マイ コンピュータ」を「ごみ箱」に変えて、
アドレスバーに「ご」と入れると、
「ごみ箱」だけになり、選択すると
マイ コンピュータのフォルダーが開きます。

他の方法を考えることにします。

ありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました