Страница: 1 |
Плиз,как узнать путь к папке "Мои документы." (те которые стандартные)
Странно , но выдаёт он мне только имя диска, где homedrive - буква ,homepath - только слэш "/" Я думаю лучше всего через реестр. Можешь скачать мой пример AutoRun Viewer или подождать до вечера. Потому как ARV сильно запутан. Не знаю. У меня ХР professional и все работает. Попробуй метод CyRax'a А метод этот очень прост. Ищешь по ключу "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders" Параметр по имени "Personal". Его значение и будет путём к папке "Мои Документы" Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" ( _ 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 Const KEY_QUERY_VALUE = &H1 Function Reg_GetPersonal() As String Function Reg_GetValue(ByVal hKey As Long, ByVal SubKey As String, ByVal ValueName As String) As String Запихай это всё в модуль. Всех с прошедшими, Спасибо за помощь, и поддержку... Страница: 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
Номер ответа: 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-сайт:
Профиль | | #5
Добавлено: 30.04.04 17:19
Номер ответа: 6
Автор ответа: dNW
Вопросов: 30
Ответов: 683
Профиль | | #6
Добавлено: 30.04.04 17:23
Номер ответа: 7
Автор ответа: @CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #7
Добавлено: 30.04.04 17:44
Номер ответа: 8
Автор ответа: @CyRax PTR
ICQ: 204447456
Вопросов: 28
Ответов: 664
Web-сайт:
Профиль | | #8
Добавлено: 30.04.04 20:25
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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Const HKEY_CURRENT_USER = &H80000001
SubKey$ = "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders"
MsgBox Reg_GetValue(HKEY_CURRENT_USER, SubKey$, "Personal")
End Function
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
и наступающими..