Текущая директория Windows

Программирование на Visual Basic for Applications
Dowson
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2007 (Сб) 21:02

Текущая директория Windows

Сообщение Dowson » 04.08.2007 (Сб) 21:20

Господа... Возможно у меня уже замылен глаз, но ниикак не могу решить задачку:
Необходимо узнать путь текущей директории в Виндоус.
CurDir - выдаёт "Мои документы", а нижеследующий код:

Код: Выделить всё

Declare Function GetCurrentDirectory Lib "kernel32" _
Alias "GetCurrentDirectoryW" ()

Function direv()
MsgBox GetCurrentDirectoryW     ' или GetCurrentDirectoryA
End Function


- значение Empty

Подскажите в чём ошибка. Два вечера пытаюсь разобраться.

Pavel55
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 27.10.2006 (Пт) 20:11

Сообщение Pavel55 » 04.08.2007 (Сб) 22:23

А если так ?

Код: Выделить всё
Sub Макрос1()
Dim iWinDir$
    iWinDir = Environ("WinDir")
    MsgBox "Windows установлена в папке: " & iWinDir
End Sub


А если нужны другие пути, то:

Код: Выделить всё
Sub Макрос2()
'Чтобы узнать информацию о системе, путях и т.д. через функцию Environ()
'Активный лист должен быть пустой
    Dim EnvString$, sSeparator$, Indx&, iPos&, iStart$, iEnd$
    Indx& = 1
    sSeparator$ = "="
    Cells.Clear
    Do
        EnvString$ = Environ(Indx&)
        If EnvString$ = "" Then Exit Do
        Cells(Indx&, 1) = Indx&
        iPos& = InStr(EnvString$, sSeparator$)
        iStart$ = Mid(EnvString$, 1, iPos& - 1)
        Cells(Indx&, 2) = iStart$
        iEnd$ = Mid(EnvString$, iPos& + 1, Len(EnvString$))
        Cells(Indx&, 3) = iEnd$
        Indx& = Indx& + 1
    Loop Until EnvString$ = ""
        Columns("A:B").AutoFit
        MsgBox "Done!"
End Sub

Dowson
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2007 (Сб) 21:02

Сообщение Dowson » 04.08.2007 (Сб) 22:37

Нет. Эти Варианты дают пути к системным, прописанным в реестре, папкам. А нужна текущая директория командного процессора. Надеюсь, я не усложнил...

Dowson
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2007 (Сб) 21:02

Сообщение Dowson » 04.08.2007 (Сб) 22:40

Т. Е. Нужно узнать в какой диретории пользователь работает с файлами и произвести их учёт.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.08.2007 (Вс) 1:56

CurDir всегда говорит правду.
GetCurrentDirectory, если исправить декларацию, будет говорить то же самое. Так что не стоит.
Изображение

Dowson
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 04.08.2007 (Сб) 21:02

Сообщение Dowson » 22.08.2007 (Ср) 22:35

А глаз-то у меня точно замылен был...
Проблема в том, что каждое приложение работает в отдельной копии коммандного процессора.
) Предлагаю подумать над вариантом, как отследить в каких директориях работал пользователь (даты создания/изменения файлов и их анализ). Хотя, проще конечно воспользоваться какой-нибудь системой для разработки ПО.


Вернуться в VBA

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

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

    TopList