廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4521 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
upside 手機 葫蘆墩家族
個人頭像
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎 社區建設獎 優秀管理員勳章
頭銜:反病毒 反詐騙 反虐犬   反病毒 反詐騙 反虐犬  
版主
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[Basic][教學] 如何取得 資料夾設定
前兩行 都能成功取得該目錄檔案
但想加入其他資料夾時 結果發生找不到的現象
不知道問題出在那裡

Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



爸爸 你一路好走
獻花 x0 回到頂端 [樓 主] From:臺灣 | Posted:2007-01-03 18:26 |
ziele 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x32
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

好像找不到 GetPFDirectory 這個API
=======================
引用 VB心得筆記
http://www.hosp.ncku.edu.tw...q00069.html

取得特殊資料夾的所在目錄

說明

我們可以利用 GetWindowsDirectory API 函數取得 Windows 的所在目錄,延續這個問題,如果我們想取得「桌面」、「開始功能表」、「程式集」、「啟動」…等特殊資料夾的所在目錄呢?假設 Windows 的所在目錄是 C:\Windows, 那麼可能有人認為以下目錄就是上述特殊資料夾的所在目錄:

C:\Windows\Desktop                     桌面
C:\Windows\Start Menu                   開始功能表
C:\Windows\Start Menu\Programs         程式集
C:\Windows\Start Menu\Programs\啟動   啟動
但實際上這個想法在以下幾種情況卻可能是錯誤的

Windows版本不同時: 舉例來說, 英文版Windows「啟動」資料夾的預設目錄是C:\Windows\Start Menu\Programs\Startup, Windows NT 4.0 中文版「桌面」資料夾的預設目錄是C:\Windows\桌面。

使用者改變了上述特殊資料夾的所在目錄:實際上Windows允許使用者依據自己的喜好改變上述特殊資料夾的所在目錄。

要正確地取得特殊資料夾的所在目錄,可呼叫 SHGetSpecialFolderLocation 及 SHGetPathFromIDList API 函數,
細節如下:

1. API 的宣告:

Const MAX_PATH = 260
Const CSIDL_DESKTOP = &H0& '桌面
Const CSIDL_INTERNET = &H1'Internet Explorer
Const CSIDL_PROGRAMS = &H2& '程式集
Const CSIDL_CONTROLS = &H3 'My Computer\Control Panel
Const CSIDL_PRINTERS = &H4 'My Computer\Printers
Const CSIDL_PERSONAL = &H5 'My Documents
Const CSIDL_FAVORITES = &H6& '我的最愛
Const CSIDL_STARTUP = &H7& '啟動
Const CSIDL_RECENT = &H8& '文件(最近開啟)
Const CSIDL_SENDTO = &H9& '傳送至
Const CSIDL_BITBUCKET = &HA '{desktop}\Recycle Bin
Const CSIDL_STARTMENU = &HB& '開始功能表
Const CSIDL_DESKTOPDIRECTORY = &H10& '桌面
Const CSIDL_DRIVES = &H11 'My Computer
Const CSIDL_NETWORK = &H12 'Network Neighbourhood
Const CSIDL_NETHOOD = &H13 'NetHood
Const CSIDL_FONTS = &H14& '字型
Const CSIDL_TEMPLATES = &H15& 'ShellNew
Const CSIDL_COMMON_STARTMENU = &H16
'All Users\Start Menu
Const CSIDL_COMMON_PROGRAMS = &H17
'All Users\Programs
Const CSIDL_COMMON_STARTUP = &H18
'All Users\Startup
Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19
'All Users\Desktop
Const CSIDL_APPDATA = &H1A
'{user}\Application Data
Const CSIDL_PRINTHOOD = &H1B
'{user}\PrintHood
Const CSIDL_LOCAL_APPDATA = &H1C
'{user}\Local Settings Application Data (non roaming)
Const CSIDL_ALTSTARTUP = &H1D
'non localized startup
Const CSIDL_COMMON_ALTSTARTUP = &H1E
'non localized common startup
Const CSIDL_COMMON_FAVORITES = &H1F
Const CSIDL_INTERNET_CACHE = &H20
Const CSIDL_COOKIES = &H21
Const CSIDL_HISTORY = &H22
Const CSIDL_COMMON_APPDATA = &H23
'All Users\Application Data
Const CSIDL_WINDOWS = &H24 'Windows目錄
Const CSIDL_SYSTEM = &H25 'Windows\system目錄
Const CSIDL_PROGRAM_FILES = &H26 'C:\Program Files
Const CSIDL_MYPICTURES = &H27 'C:\Program Files\My Pictures
Const CSIDL_PROFILE = &H28 'USERPROFILE
Const CSIDL_SYSTEMX86 = &H29
'x86 system directory on RISC
Const CSIDL_PROGRAM_FILESX86 = &H2A
'x86 C:\Program Files on RISC
Const CSIDL_PROGRAM_FILES_COMMON = &H2B
'C:\Program Files\Common
Const CSIDL_PROGRAM_FILES_COMMONX86 = &H2C
'x86 Program Files\Common on RISC
Const CSIDL_COMMON_TEMPLATES = &H2D
'All Users\Templates
Const CSIDL_COMMON_DOCUMENTS = &H2E
'All Users\Documents
Const CSIDL_COMMON_ADMINTOOLS = &H2F
'All Users\Start Menu\Programs\Administrative Tools
Const CSIDL_ADMINTOOLS = &H30
'{user}\Start Menu\Programs\Administrative Tools

Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long

註:如果以上的宣告放在「一般模組」底下, 應在 Const 之前加上 Public 保留字, 並且將 Private 保留字去掉。


2. 呼叫例:

Const MAX_PATH = 260
Dim pidl As Long, S As String

Id = CSIDL_DESKTOP ' 「桌面」資料夾
S = String(MAX_PATH, 0)
SHGetSpecialFolderLocation 0, Id, pidl
SHGetPathFromIDList pidl, S
S = Left(S, InStr(S, Chr(0)) - 1)

' S 等於「桌面」的所在目錄

此文章被評分,最近評分記錄
財富:50 (by codeboy) | 理由: 謝謝您的協助


獻花 x0 回到頂端 [1 樓] From:臺灣中華電信HINET | Posted:2007-01-04 16:03 |
白色三菱
個人頭像
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x63 鮮花 x226
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

複製程式
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ListFolder(Environment.SpecialFolder.ApplicationData)
        ListFolder(Environment.SpecialFolder.CommonApplicationData)
        ListFolder(Environment.SpecialFolder.CommonProgramFiles)
        ListFolder(Environment.SpecialFolder.Cookies)
        ListFolder(Environment.SpecialFolder.Desktop)
        ListFolder(Environment.SpecialFolder.DesktopDirectory)
        ListFolder(Environment.SpecialFolder.Favorites)
        ListFolder(Environment.SpecialFolder.History)
        ListFolder(Environment.SpecialFolder.InternetCache)
        ListFolder(Environment.SpecialFolder.LocalApplicationData)
        ListFolder(Environment.SpecialFolder.MyComputer)
        ListFolder(Environment.SpecialFolder.MyMusic)
        ListFolder(Environment.SpecialFolder.MyPictures)
        ListFolder(Environment.SpecialFolder.Personal)
        ListFolder(Environment.SpecialFolder.ProgramFiles)
        ListFolder(Environment.SpecialFolder.Programs)
        ListFolder(Environment.SpecialFolder.Recent)
        ListFolder(Environment.SpecialFolder.SendTo)
        ListFolder(Environment.SpecialFolder.StartMenu)
        ListFolder(Environment.SpecialFolder.Startup)
        ListFolder(Environment.SpecialFolder.System)
        ListFolder(Environment.SpecialFolder.Templates)

        txtFolders.Select(0, 0)
    End Sub

    Private Sub ListFolder(ByVal folder_type As System.Environment.SpecialFolder)
        Dim txt As String = folder_type.ToString & ":"
        txtFolders.Text &= String.Format("{0,-25}", txt) & _
            Environment.GetFolderPath(folder_type) & vbCrLf
    End Sub


[ 此文章被傳說國度在2007-01-07 22:01重新編輯 ]

此文章被評分,最近評分記錄
財富:80 (by codeboy) | 理由: 感謝您的解答喔


研發商業軟體中......
獻花 x0 回到頂端 [2 樓] From:臺灣中華HiNet | Posted:2007-01-07 21:38 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.071177 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言