Укрощение CommonDialog

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
ZOD
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 24.03.2004 (Ср) 19:54
Откуда: Barnaul

Укрощение CommonDialog

Сообщение ZOD » 04.06.2008 (Ср) 9:50

Подскажите плз, как в диалоге открытия выставить папку по умолчанию на рабочий стол.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.06.2008 (Ср) 11:36

Получить путь к этой папке и вставить его в соответствующее поле структуры (свойство контрола). В каком из пунктов затруднения?
Весь мир матрица, а мы в нем потоки байтов!

ZOD
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 24.03.2004 (Ср) 19:54
Откуда: Barnaul

Сообщение ZOD » 04.06.2008 (Ср) 12:32

Проблема в том, что в ХР, для каждого пользователя рабочий стол распологается в своей папке, а 9х в WINDOWS\Рабочий стол вроде. Как можно узнать местоположение рабочего стола.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.06.2008 (Ср) 13:26

Не уверен, но помоему в переменных окружения рабочий стол был указан еще в Windows 95. Попробуй использовать Environ$().
Lasciate ogni speranza, voi ch'entrate.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.06.2008 (Ср) 14:08

alibek, у меня в переменных окружения Рабочего Стола нет (Win XP).
ZOD, через функцию SHGetFolderLocation можно получить этот путь при использовании константы CSIDL_DESKTOPDIRECTORY для получения каталога физического расположения файлов Рабочего Стола, обычно это C:\Documents and Settings\username\Desktop. Или с константой CSIDL_DESKTOP получим виртуальную папку Рабочего Стола.
Весь мир матрица, а мы в нем потоки байтов!

ZOD
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 24.03.2004 (Ср) 19:54
Откуда: Barnaul

Сообщение ZOD » 04.06.2008 (Ср) 16:54

Viper
Напиши пожалуйста код, а то я винапи ваще не понимаю :(
Кстати, эта функция есть только начиная с WinME и Win2000.

ZOD
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 24.03.2004 (Ср) 19:54
Откуда: Barnaul

Сообщение ZOD » 04.06.2008 (Ср) 17:04

В ком. диалоге есть кнопки быстого перехода к папкам, там в т.ч. есть рабочий стол. Может это как-то можно использовать?

ZOD
Обычный пользователь
Обычный пользователь
 
Сообщения: 75
Зарегистрирован: 24.03.2004 (Ср) 19:54
Откуда: Barnaul

Сообщение ZOD » 04.06.2008 (Ср) 20:16

Ура! Решил проблему! Нашел на этом замечательном форуме www.vbforums.com. Только там все на английском.
Всем спасибо за ответы.
Выкладываю, если клму понадобиться. Тут для всех стандартных папок есть. Может это сразу в частозадаваемые вопросы переложить?
Код: Выделить всё

Option Explicit

Private Declare Function SHGetFolderPath Lib "shfolder" Alias "SHGetFolderPathA" (ByVal hwndOwner As Long, ByVal nFolder As Long, ByVal hToken As Long, ByVal dwFlags As Long, ByVal pszPath As String) As Long
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer 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

'get windows system path
Public Function GetSystemPath() As String
    Dim sRet As String, lngRet As Long
    sRet = String$(255, 0)
    lngRet = GetSystemDirectory(sRet, 255)
    GetSystemPath = Left$(sRet, lngRet)
End Function

'get windows path
Public Function GetWindowsPath() As String
    Dim sRet As String, lngRet As Long
    sRet = String$(255, 0)
    lngRet = GetWindowsDirectory(sRet, 255)
    GetWindowsPath = Left$(sRet, lngRet)
End Function

'get programs path
Public Function GetProgramsPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H26
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetProgramsPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get all desktop path
Public Function GetAllDesktopPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H19
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetAllDesktopPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get all start menu path
Public Function GetAllStartMenuPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H16
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetAllStartMenuPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get user start menu path
Public Function GetUserStartMenuPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &HB
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetUserStartMenuPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get all start menu programs path
Public Function GetAllStartProgramsPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H17
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetAllStartProgramsPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get user start menu programs path
Public Function GetUserStartProgramsPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H2
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetUserStartProgramsPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get user appdata
Public Function GetUserApplicationDataPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H1A
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetUserApplicationDataPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get all users appdata
Public Function GetAllApplicationDataPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H23
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetAllApplicationDataPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get my documents path
Public Function GetMyDocumentsPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H5
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetMyDocumentsPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get quick launch path
Public Function GetQuickLaunch() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H1A
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetQuickLaunch = Left$(strPath, InStr(1, strPath, Chr(0)) - 1) & "\Microsoft\Internet Explorer\Quick Launch"
End Function

'get desktop path
Public Function GetUserDesktopPath() As String
    Dim strBuffer  As String
    Dim strPath    As String
    Dim lngReturn  As Long
    Dim lngCSIDL   As Long
    lngCSIDL = &H0
    strPath = String(260, 0)
    lngReturn = SHGetFolderPath(0, lngCSIDL, 0, &H0, strPath)
    GetUserDesktopPath = Left$(strPath, InStr(1, strPath, Chr(0)) - 1)
End Function

'get temp directory
Public Function GetTempDir() As String
    Dim nSize As Long
    Dim Buff As String
    Buff = Space$(260)
    nSize = Len(Buff)
    Call GetTempPath(nSize, Buff)
    GetTempDir = TrimNull(Buff)
End Function

Private Function TrimNull(Item As String)
    Dim pos As Integer
    pos = InStr(Item, Chr$(0))
    If pos Then
       TrimNull = Left$(Item, pos - 1)
    Else
       TrimNull = Item
    End If
End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 81

    TopList