|
Jak okreslić katalog systemowy windows? |
|
|
|
Napisał Administrator
|
|
poniedziałek, 12 wrzesień 2005 |
Wyt?umaczenie funkcji zwracaj?cej folder windows jest bardzo proste.
Prawid?owa funkcja ma posta? :
Declare Function GetWindowsDirectory Lib "Kernel32.dll" Alias "GetWindowsDirectoryA" (ByVal
lpBuffer As String, ByVal nSize As Long) As Long
Function Win32Fld() As String
Dim WinPath As String
Dim tmp As Long
'Zapisanie 255 * znak pusty do
WinPath = String(255, Chr(0))
'Pobranie d?ugo?ci znaków scie?ki Win95
tmp = GetWindowsDirectory(WinPath, 255)
'W?a?ciwa ?cie?ka Win95
Win32Fld = Left(WinPath, tmp)
End Function
Ca?a zawi?o?? polega na tym, ?e Windows poprzez API wykorzystuje ?a?cuchy zako?czone
znakiem pustym
(null terminated strings), a cechy VB nie s? od razu z nimi
kompatybilne.
A cechy ze znakiem pustym to takie, które maj okre?lon? d?ugo?? , a na ich ko?cu znajduje si
znak pusty Chr(0) (nie spacja).
I dlatego zmienna WinPath musi mie? najpierw ustalon? d?ugo?? - 255 (max d? ugo?? ?cie?ki w
Win95). Zostaje ona wype?niona
znakami pustymi. Funkcja GetWindowsDirectory zwraca pozycj? za ostatnim znakiem w
?cie?ce. I na koniec z ca?ej
?cie?ki WinPath zostaj wyci?ta tylko prawid?owa jej cz??? , w przeciwnym razie ?cie?ka
wygl?da?a by tak: "C:\Windows#0#0#0#0...".
Aby dodać komentarz zaloguj się. Jeśli nie masz konta, załóż je sobie. Tylko zarejestrowani użytkownicy mogą pisać komentarze. Powered by AkoComment 2.0! |