CommonDialogを開いたとき「デスクトップ」(一番上の)を開いた状態にするには?

解決


むら  2004-02-06 09:54:42  No: 111695  IP: [192.*.*.*]

すいませんがお願いします。
CommonDialogを開いたとき「デスクトップ」(マイコンピューターやネットワークコンピューターがある場所」を開いた状態にするには?
InitDir = ????
何を入れたらよいのでしょうか?
過去ログに「マイコンピューター」はあったのですが…。
お願いします。

編集 削除
特攻隊長まるるう  2004-02-06 10:29:33  No: 111696  IP: [192.*.*.*]

>過去ログに「マイコンピューター」はあったのですが…。
…あれは少し特別な方法でして…
マイコンピュータはフォルダが存在しませんので Path が
CLSID パスというものを使ってみました。

デスクトップはフォルダが存在しますので Path を求める方法も
結構たくさんあります。
一般に『特殊フォルダ』と呼ばれてますので調べてみて下さい。
VB だと FileSystemObject に GetSpecialFolder メソッドとか
あるんですがデスクトップだと API を使った方が良さそうです。
SHGetSpecialFolderPath を使ってみてください。
花ちゃんのサイト
http://www.bcap.co.jp/hanafusa/
の、逆引きヘルプ一覧表にサンプルもあります。

編集 削除
特攻隊長まるるう  2004-02-06 10:31:57  No: 111697  IP: [192.*.*.*]

あと、余談ですが、
デスクトップにマイコンピュータやネットワークコンピュータがある
とは限りません。ってゆーか実体は別だと思われます…。

編集 削除
むら  2004-02-06 11:24:41  No: 111698  IP: [192.*.*.*]

特攻隊長まるるうさん  早速ありがとうございます。(さすが特攻隊長ですね!)
花ちゃんサイトを参考に見ました。"SHGetSpecialFolderPath" で"CSIDL_DESKTOP"にしてやってみます。
API関数の方、あまり詳しくないので、調べたりしながらやってみます。

最終的にはネットワークコンピュータ(他の各PC)の任意フォルダのパスを管理したいということで、新しくPCを入れたら、そこに任意のフォルダをつくり、そこのパスが知りたいということです。
そこで、"CommonDialog"でやればいいかな?と思ったんですが…。
パスの値って、取れるのですか??(基本的なことでした…。)

編集 削除
特攻隊長まるるう  2004-02-06 17:36:59  No: 111699  IP: [192.*.*.*]

デスクトップの設定はドメインごとのユーザごとに
ユーザプロファイルの一部として保存されます。
つまり1つのPCにデスクトップは
[ユーザ] * [過去にログインしたドメイン]
の数だけ存在する可能性があります。更に共通で
使用する All Users や Default User が存在します。

各PCの何を管理するかが分からないと助言は難しいですが、
他のPCからだとユーザがどう限定されるか…やったこと
無いので分かりません。
…というか自分のPCでプログラムを動かしちゃうと自分の
デスクトップのパスが取れるだけでしょうから…まぁ、
色々と工夫が必要そうです。

知識として知っておいてくださいね(^^)。

編集 削除
むら  2004-02-06 17:41:45  No: 111700  IP: [192.*.*.*]

助言ありがとうございます。

最初に教えていただいた、「CLSID」のやり方は、実際試してみました。
いろいろな、ディレクトリ(設定)ができて、ほぉー!という感じで、なかなか良かったです。

最後の助言で、ユーザーごとにいろいろ問題があるのは知っていました。
これから、少しずつ、試したり参照したりで、勉強してやってみます。
また聞くことがあるかもしれませんがよろしくお願いします。

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

編集 削除