广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4509 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.021637 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言