Страница: 1 |
Страница: 1 |
Вопрос: рабочий стол
Добавлено: 26.01.06 13:48
Автор вопроса: Leha
Как узнать путь к папке рабочего стола?
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #1
Добавлено: 26.01.06 14:27
В MSDN нашел пока только через WSH
Подключаем в Project-Refrences Windows Script Host Object Model и..
MsgBox wsh.SpecialFolders("esktop"
Должно быть и через API.
Номер ответа: 2
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #2
Добавлено: 26.01.06 14:53
Можно просто в реестре прочитать по ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
Название параметра - Desktop
Значение - то, что тебе нужно
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 26.01.06 15:21
О как! Ещё должны быть варианты.
Номер ответа: 4
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #4
Добавлено: 26.01.06 20:51
Private Const TOKEN_QUERY = (&H8)
Private Declare Function GetAllUsersProfileDirectory Lib "userenv.dll" Alias "GetAllUsersProfileDirectoryA" (ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetDefaultUserProfileDirectory Lib "userenv.dll" Alias "GetDefaultUserProfileDirectoryA" (ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetProfilesDirectory Lib "userenv.dll" Alias "GetProfilesDirectoryA" (ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetUserProfileDirectory Lib "userenv.dll" Alias "GetUserProfileDirectoryA" (ByVal hToken As Long, ByVal lpProfileDir As String, lpcchSize As Long) As Boolean
Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
Private Declare Function OpenProcessToken Lib "advapi32" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
Private Sub Form_Load()
Dim sBuffer As String, Ret As Long, hToken As Long
sBuffer = String(255, 0)
OpenProcessToken GetCurrentProcess, TOKEN_QUERY, hToken
GetUserProfileDirectory hToken, sBuffer, 255
MsgBox StripTerminator(sBuffer) & "\Рабочий стол"
End Sub
Function StripTerminator(sInput As String) As String
Dim ZeroPos As Long
ZeroPos = InStr(1, sInput, Chr$(0))
If ZeroPos > 0 Then
StripTerminator = Left$(sInput, ZeroPos - 1)
Else
StripTerminator = sInput
End If
End Function
Номер ответа: 5
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #5
Добавлено: 27.01.06 08:20
Это не сработает на английской версии Windows, а также на Win95/98/ME, хотя тоже можно.
Номер ответа: 6
Автор ответа:
SerJ
Вопросов: 24
Ответов: 332
Профиль | | #6
Добавлено: 27.01.06 13:07
Ничё, можно версию проверить
и написать варианты для английской, французкой, немецкой и т.д...
Номер ответа: 7
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #7
Добавлено: 03.02.06 18:40
Ну можно и с помощью Environ. Токо приноровиться надо.