vb中怎么寻路径!!!

vb中怎么寻路径!!!,第1张

'在窗体中添加一个CommandButton,将下面的代码放入窗体代码中

'用其它的方式也可以,但如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个空格不加其他符号的.然后点这个框框右边的箭头,就会出来一个叫你输入坐标名称的框,随便输点什么或者输你要到的地方的名字好区分都可以.好了之后就会在地图上有个点,点那里就可以.或者在刚刚输坐标的框框下面有个你输入的地名,右键点击或者左键双击就可以了!


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11600075.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存