Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: как узнать путь к папке "Мои документы." (те ко... Добавлено: 30.04.04 15:54  

Автор вопроса:  Queen

Плиз,как узнать путь к папке "Мои документы." (те которые стандартные)

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #1 Добавлено: 30.04.04 16:00
Dim value As String
 value = Environ$("homedrive") & Environ$("homepath")
 MsgBox value

Ответить

Номер ответа: 2
Автор ответа:
 Queen



Вопросов: 10
Ответов: 11
 Профиль | | #2 Добавлено: 30.04.04 16:35

Странно , но выдаёт он мне только имя диска,

где homedrive - буква ,homepath - только слэш "/"

Ответить

Номер ответа: 3
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #3 Добавлено: 30.04.04 17:04
А какой у тебя Windows?

Ответить

Номер ответа: 4
Автор ответа:
 Queen



Вопросов: 10
Ответов: 11
 Профиль | | #4 Добавлено: 30.04.04 17:17
Win2000/XP

Ответить

Номер ответа: 5
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #5
Добавлено: 30.04.04 17:19

Я думаю лучше всего через реестр.

Можешь скачать мой пример AutoRun Viewer или подождать до вечера. Потому как ARV сильно запутан.

Ответить

Номер ответа: 6
Автор ответа:
 dNW



Вопросов: 30
Ответов: 683
 Профиль | | #6 Добавлено: 30.04.04 17:23

Не знаю. У меня ХР professional и все работает. Попробуй метод CyRax'a

Ответить

Номер ответа: 7
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #7
Добавлено: 30.04.04 17:44

А метод этот очень прост.

Ищешь по ключу

"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"

Параметр по имени "Personal". Его значение и будет путём к папке "Мои Документы"

Ответить

Номер ответа: 8
Автор ответа:
 @CyRax PTR



ICQ: 204447456 

Вопросов: 28
Ответов: 664
 Web-сайт: basicproduction.nm.ru/
 Профиль | | #8
Добавлено: 30.04.04 20:25

Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _
     ByVal hKey As Long, _
     ByVal lpValueName As String, _
     ByVal lpReserved As Long, _
     ByRef lpType As Long, _
     ByRef lpData As Any, _
     ByRef lpcbData As Long) As Long

Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Private Const KEY_QUERY_VALUE = &H1

Function Reg_GetPersonal() As String
 Const HKEY_CURRENT_USER = &H80000001
 SubKey$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
 MsgBox Reg_GetValue(HKEY_CURRENT_USER, SubKey$, "Personal")
End Function

Function Reg_GetValue(ByVal hKey As Long, ByVal SubKey As String, ByVal ValueName As String) As String
 ValueData$ = String(255, 0)
 Call RegOpenKeyEx(hKey, SubKey, 0, KEY_QUERY_VALUE, hKey)
    Call RegQueryValueEx(hKey, ValueName, 0, 0, ByVal ValueData, 255)
 Call RegCloseKey(hKey)
 Reg_GetValue = ValueData
End Function

Запихай это всё в модуль.

Ответить

Номер ответа: 9
Автор ответа:
 2San



Вопросов: 11
Ответов: 68
 Профиль | | #9 Добавлено: 30.04.04 21:28
По моему такой код больше подходит:
(засунь все в форму)
Работае под всеми виндами (выше 3.11 конечно)

Option Explicit
Private Enum SHELLFOLDERS
CSIDL_DESKTOP = &H0& ' \Desktop
CSIDL_PROGRAMS = &H2& ' \Start Menu\Programs
CSIDL_CONTROLS = &H3& ' No Path
CSIDL_PRINTERS = &H4& ' No Path
CSIDL_PERSONAL = &H5& ' \Personal
CSIDL_FAVORITES = &H6& ' \Favorites
CSIDL_STARTUP = &H7& ' \Start Menu\Programs\Startup
CSIDL_RECENT = &H8& ' \Recent
CSIDL_SENDTO = &H9& ' \SendTo
CSIDL_BITBUCKET = &HA& ' No Path
CSIDL_STARTMENU = &HB& ' \Start Menu
CSIDL_DESKTOPDIRECTORY = &H10& ' \Desktop
CSIDL_DRIVES = &H11& ' No Path
CSIDL_NETWORK = &H12& ' No Path
CSIDL_NETHOOD = &H13& ' \NetHood
CSIDL_FONTS = &H14& ' \fonts
CSIDL_TEMPLATES = &H15& ' \ShellNew
CSIDL_COMMON_STARTMENU = &H16& ' ..\WinNT\profiles\All Users\Start Menu
CSIDL_COMMON_PROGRAMS = &H17& ' ..\WinNT\profiles\All Users\Start Menu\Programs
CSIDL_COMMON_STARTUP = &H18& ' ..\WinNT\profiles\All Users\Start Menu\Programs\Startup
CSIDL_COMMON_DESKTOPDIRECTORY = &H19& '..\WinNT\profiles\All Users\Desktop
CSIDL_APPDATA = &H1A& ' ..\WinNT\profiles\username\Application Data
CSIDL_PRINTHOOD = &H1B& ' ..\WinNT\profiles\username\PrintHood
End Enum
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 Sub Form_Load()
MsgBox GetSYSDir(CSIDL_PERSONAL)
End
End Sub
Private Function GetSYSDir(ForDir As SHELLFOLDERS) As String
Dim lReturn As Long
Dim lPidl As Long
Dim lPath As Long
Dim sPath As String

sPath = Space$(260)
lReturn = SHGetSpecialFolderLocation(0, ForDir, lPidl)
If lReturn = 0 Then
lReturn = SHGetPathFromIDList(lPidl, sPath)
If lReturn = 1 Then
sPath = Trim$(sPath)
lPath = Len(sPath)
If Asc(Right$(sPath, 1)) = 0 Then lPath = lPath - 1
If lPath > 0 Then
sPath = Left$(sPath, lPath)
If Right$(sPath, 1) <> "\" Then sPath = sPath + "\"
GetSYSDir = sPath
End If
End If
End If
End Function


Ответить

Номер ответа: 10
Автор ответа:
 Queen



Вопросов: 10
Ответов: 11
 Профиль | | #10 Добавлено: 05.05.04 08:27

Всех с прошедшими,  и наступающими..

Спасибо за помощь, и поддержку...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам