PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
20409 03/10/09 11:09:21 RE(7):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By itameya
20405 03/10/09 00:35:39 RE(6):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By isii
20403 03/10/08 18:01:28 RE(5):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By itameya
20400 03/10/08 17:52:38 RE(4):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By hirotyan
20398 03/10/08 17:29:53 RE(3):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By itameya
20192 03/08/27 08:48:23 RE(2):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By innan-taka
20189 03/08/26 17:03:09 RE(1):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By hirotyan
20187 03/08/26 15:25:10 PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について By innan-taka

カテゴリ:PowerBuilderの開発環境
日付:2003年10月09日 00:35 発信者:isii
題名:RE(6):PB7.0: 特殊フォルダ(デスクトップ、スタートメニュー)の取得について

itameyaさん、こんばんは。

>早速のアドバイスありがとうございます。
>環境はwin2000なので、問題はないと思うのですが、
>16,22,0,1等試してみましたが、一切何も表示されません。
>ネットで調べてもVB等は見つかるのですが
>その記述では
>CSIDL_DESKTOPDIRECTORY
>等となっており、PBでの場合と与え方が異なっているようでうまくいきません。

>番号が間違ってるだけならば、別の場所のPathが表示されてもいいと思うので
>別の場所が間違っているのかもしれません。

原因は、SHGetPathFromIDList()の定義が間違っているためです。
第二引数のpszPathは、ポインタ渡しなのでrefを付ける必要があります。
Function Long SHGetPathFromIDList(long pidl, ref string pszPath)
 LIBRARY \"shell32.dll\" Alias for \"SHGetPathFromIDListA\"

CSIDL_DESKTOPDIRECTORYは、どこかで宣言されているはずです。
ただし、言語によって宣言の仕方が違います。
PBでは、16進数で表記できないため以下のようになります。
CONSTANT CSIDL_DESKTOP = 0
CONSTANT CSIDL_INTERNET = 1
CONSTANT CSIDL_DESKTOPDIRECTORY = 16
CONSTANT CSIDL_COMMON_STARTMENU = 22
その他の値等はインターネット等で調べてください。

余談ですが、レジストリから取得する方法もあります。
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows 2000
DBMS Microsoft SQL Server Client 6.5
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.