ユーザーごとに分けられたデスクトップやスタートメニューのフォルダのパスを取得するには?

解決


神流美咲  URL  2002-06-08 06:42:59  No: 104342

ユーザーごとに分けられたデスクトップやスタートメニューのフォルダのパスを取得するにはどうすればよいのでしょう?
WindowsAPIを使うしか無いのでしょうけど、どのAPIを使用すれば良いのでしょうか?


たかみちえ  URL  2002-06-08 07:36:28  No: 104343

ディレクトリ取得の4大API(他にないです^^;)の
GetWindowsDirectory
GetSystemDirectory
GetTempPath
SHGetSpecialFolderLocation
の四つは、全部ユーザーごとに分けられたものを返します。
(といっても、上三つので得られるフォルダは、ユーザーに依存しませんけど)
  うちは、ユーザーが一人しかいないのに、"たかみちえ"としてユーザー設定しちゃったので…。
もー、消して修正するのも面倒だし、ずっとこのまんまなんです^^;
まっすぐ起動してくれないので困ります^^;


YuO  2002-06-08 07:37:22  No: 104344

SHGetFolderPathで取得できます……がOSの制限が……。

SHGetSpecialFolderLocationとSHGetPathFromIDListだとWin32なら大抵使えます。


神流美咲  URL  2002-06-14 07:41:55  No: 104345

ありがとございます
ただ、ためそうと思ったSHGetSpecialFolderLocationとSHGetPathFromIDListがAPIビューアに無かったため試せませんでした。
参照先ライブラリと引数、返値の型を教えてもらえないでしょうか。


たかみちえ  URL  2002-06-14 09:46:52  No: 104346

それでは自作モジュールからの引用です。
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As STATES, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" (ByVal pidl As Long, ByVal pszPath As String) As Long

  あ、でもこれ、もしよければ使っていいですよ。
ええと、わたしのホームページにある
"あっぷっぷぼーど"にアップしておきます^^;
http://hpcgi2.nifty.com/_omp/uppboard/upb.cgi
↑あっぷっぷぼーど
なんだかVB関係と音楽関係とかがごちゃ混ぜになっちゃいそうですけど…。

  使いかたは特になにも書いていませんけど、
WindowsプロパティでWindowsフォルダを取得
SystemプロパティでSystemフォルダを取得
TempプロパティでTempフォルダを取得
(上三つはクラス生成時に自動取得)
その他のディレクトリは、
SpecialDir関数を使うと、全部取得できます。
SpecialDir(  といれると、引数に使えるものリストが出るので、
  そこからほしいフォルダのものを選んでください。
もどりちがフォルダ名です。

おまけ関数のlowerPathは引数にしたパスをいろいろなところから扱えるように加工
upperPathはその逆を行います。
DelTemporaryFilesは、Tempフォルダのソフトのタイトルとおなじなまえのフォルダのなかのファイルを全て削除します。
DelNullはNull文字を削除します。


神流美咲  2002-06-22 04:40:22  No: 104347

ありがとうございますおかげさまで取得できました。
このクラスファイル加工して使用させて貰ってもいいですか?


たかみちえ  URL  2002-06-22 06:08:52  No: 104348

いいですよ、お好きに使ってください。
もっといい使いかたもあるかもしれないので。


神流美咲  URL  2002-07-04 03:27:51  No: 104349

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加