
'用其它的方式也可以,但如Environ("userprofile")+ "\桌面\"方式这类的可能会出错,比如在繁体系统或是英文系统中根本就没有“桌面”这个目录,英文系统中是"DeskTOP",还有一些系统中可能自定义了桌面路径,如在我自己的电脑上是系统在C:盘而桌面路径被定义到了F:\MyData\DeskTOP中(防止Ghost的时候桌面丢失)。这下面这个函数的话修改不同参数可以获取Windows系统中的大部分特殊目录(桌面、我的文档、字体等等,具体可以看说明),而且获取到的目录都是以系统当前设置为准。使用时只要把代码保存在一个模块中,调用时一个函数搞定。
Private Sub Command1_Click()
MsgBox GetWinPath(CSIDL_DESKTOP)
End Sub
'将下面的代码放入一个模块中
'*************************************************************************************************
'******************** 作者: 南宫飘雪 ******************************************
'******************** Email: Joforn@sohu.com ******************************************
'******************** QQ:42978116 ******************************************
'*************************************************************************************************
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pIdl As Long, ByVal szPath As String) As Long
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const thePathMaxLen = 1024
Public Enum SHSpecialFolderIDs '注释:列出所有Windows下特殊文件夹的ID
CSIDL_DEFAULT = &HFF'默认,一般为空
CSIDL_DESKTOP = &H0 '“桌面”目录
CSIDL_INTERNET = &H1
CSIDL_PROGRAMS = &H2'“程序”目录
CSIDL_CONTROLS = &H3
CSIDL_PRINTERS = &H4
CSIDL_PERSONAL = &H5'“我的文档”目录
CSIDL_FAVORITES = &H6 '“收藏夹”目录
CSIDL_STARTUP = &H7 '“启动”目录
CSIDL_RECENT = &H8 '“最近文档”目录
CSIDL_SENDTO = &H9 '“发送到...”目录
CSIDL_BITBUCKET = &HA
CSIDL_STARTMENU = &HB '“开始”菜单目录
CSIDL_DESKTOPDIRECTORY = &H10
CSIDL_DRIVES = &H11
CSIDL_NETWORK = &H12'NETWORK目录
CSIDL_NETHOOD = &H13'NETHOOD目录
CSIDL_FONTS = &H14 '“字体”目录
CSIDL_TEMPLATES = &H15 'TEMPLATES目录
CSIDL_COMMON_STARTMENU = &H16 '公用“开始”菜单目录
CSIDL_COMMON_PROGRAMS = &H17'公用“程序”目录
CSIDL_COMMON_STARTUP = &H18 '公用“启动”目录
CSIDL_COMMON_DESKTOPDIRECTORY = &H19
CSIDL_APPDATA = &H1A'AppData目录
CSIDL_PRINTHOOD = &H1B '打印
CSIDL_ALTSTARTUP = &H1D
CSIDL_COMMON_ALTSTARTUP = &H1E
CSIDL_COMMON_FAVORITES = &H1F '公用收藏夹
CSIDL_INTERNET_CACHE = &H20 'Internet网页临时目录
CSIDL_COOKIES = &H21'COOKIES目录
CSIDL_HISTORY = &H22'历史记录
CSIDL_WINDOWS = &H8000&'Windows目录
CSIDL_SYSTEM = &H8001& '系统目录,Win9x为SYSTEM,2K/XP为SYSTEM32的全路径
CSIDL_TEMP = &H8002& '临时目录全路径
End Enum
Public Function GetWinPath(ByVal PathLong As SHSpecialFolderIDs) As String
'注释:获取一个指定ID的Windows目录全路径
'输入:PathLong为目录ID号,详情参照SHSpecialFolderIDs
'注释:作者 南宫飘雪 Joforn@sohu.com
Dim tPath As String * thePathMaxLen
Dim pIdl As Long, pathL As Long
If PathLong <255 Then
If SHGetSpecialFolderLocation(0&, PathLong, pIdl) Then Exit Function
If SHGetPathFromIDList(pIdl, tPath) Then
pathL = InStr(tPath, Chr(0))
If pathL Then
GetWinPath = Left(tPath, pathL - 1)
Else
GetWinPath = vbNullString
End If
End If
Else
Select Case PathLong
Case CSIDL_WINDOWS:
pathL = GetWindowsDirectory(tPath, thePathMaxLen)
Case CSIDL_SYSTEM:
pathL = GetSystemDirectory(tPath, thePathMaxLen)
Case CSIDL_TEMP:
pathL = GetTempPath(thePathMaxLen, tPath)
End Select
If pathL >0 Then GetWinPath = Left(tPath, pathL)
End If
End Function
点开右上角的"自动寻径"(小地图边上一个绿色的箭头一个红色的点的按钮),在那个坐标输入的地方输入你要到的地方(488 68) ,注意两个数字之间是要加2个空格不加其他符号的.然后点这个框框右边的箭头,就会出来一个叫你输入坐标名称的框,随便输点什么或者输你要到的地方的名字好区分都可以.好了之后就会在地图上有个点,点那里就可以.或者在刚刚输坐标的框框下面有个你输入的地名,右键点击或者左键双击就可以了!欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)