Программирование
Веб программирование

Узнаем дирку Винды

 
 

Т.к. у некоторых версий винда нестандартная дирка (у Винда95 - Win95, у других Windows...), наша цель узнать ее. Для этого можно использовать очень старую (еще с QBasic), и почти всеми забытою функцию Environ("windir")(Text1.Text = Environ("windir")), но мы сделаем через API:. GetWindowsDirectory.

На форму кидаем текстовое поле и кнопку. В модуле декларируем API-функцию GetWindowsDirectory:.Для этого войди в Project/Add Module и нажми Module. Они нужны для объявления глобальных переменных и декларирования API функций.

Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long 
Теперь впиши этот код в окне кода программы:
Private Sub Command1_Click()
Dim WinDir As String
'Переменную, которую надо передать API, мы уже 
'объявили и теперь заполняем пробелами. 
' Пробелов должно быть примерно столько, 
'сколько примерно символов должна иметь переменная. 
'В этом случае хватит и 20, т.к. Windows обычно устанавливают в 
' С:Windows или C:Win95, и т.д. Т.е. сумма символов, скорее 
' всего не превысит 20 
WinDir = Space(20) 
Text1.Text= Left(WinDir, GetWindowsDirectory(WinDir, 20)) 
'Т.к. API является функцией, то она должна возвращать какое-то 
'значение. В данном случае функция GetWindowsDirectory возвращает 
'длину искомого значения. Т.е. если, например, искомое значение 
' это C:WINDOWS, то функция вернёт значение 10. 
'Переменная же имеете длину 20. Эти 10 символов записываются 
'первыми, а дальше идут 10 пробелов. Зачем нам, спрашивается, 
'лишние 10 символов? Ведь это используется ненужная память... 
'Поэтому инструкцией Left мы из переменной WinDir вытаскиваем 
'ровно столько первых символов, сколько вообще нужных... 
End Sub 

У тебя в текстовом поле появится путь к винду.


Есть вопросы? Спроси на нашем форуме!!
E@gle [04.06.2011 13:35]

ну нафига api тогда, если все можно сделать одной строкой(environ)

Карим [06.11.2011 01:16]

Спасибо , я давно искал это.

Юра [10.11.2011 20:58]

Мне кажется так проще:
Option Explicit
Dim sPathWin As String

Private Sub Form_Load()
sPathWin = Environ("windir")
Label1.Caption = sPathWin
End Sub

Саня [10.11.2011 21:10]

А функция Environ нужна только для того чтобы папку винды узнать???

Юра [10.11.2011 21:32]

Не только.

Юра [10.11.2011 21:35]

Не только.



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.