Unsupported Functions

29/04/2015 - 10:14 von Lothar Geyer | Report spam
Ich verwende an einer Stelle die Funktion SHGetSpecialFolderLocation.
Nun habe ich gelesen, dass diese Funktion "not supported" ist "and may
be altered or unavailable in the future. Instead, use
SHGetFolderLocation." Bei der Beschreibung dieser Funktion steht
"Deprecated". Und dass ab Vista da irgendwas irgendwie wàre ;-)

Da ich kein großer Kenner des Windows-API bin, habe ich die Routine
sicher geklaut:

Public Function GetSpecialPath(ByVal Folder As SpecialFolderConstants)
As String
Dim Result As Long
Dim Buff As String
Dim idl As ITEMIDLIST

Result = SHGetSpecialFolderLocation(0, Folder, idl)
If Result = 0 Then
Buff = Space$(512)
Result = SHGetPathFromIDList(ByVal idl.mkid.cb, ByVal Buff)
If Result Then
GetSpecialPath = Left(Buff, InStr(Buff, Chr(0)) - 1)
End If
End If

Exit Function

End Function

Muss ich die jetzt umschreiben und für alte Windows-Versionen (wir haben
noch Kunden mit W2K und XP im Einsatz) und für neue getrennte Routinen
verwalten?

Lothar Geyer
 

Lesen sie die antworten

#1 Anton Bayer
02/05/2015 - 17:43 | Warnen spam
Muss ich die jetzt umschreiben und für alte Windows-Versionen (wir haben
noch Kunden mit W2K und XP im Einsatz) und für neue getrennte Routinen
verwalten?



Im Prinzip ja. Aber unsupported heißt ja nicht unreliable. Die Gefahr, daß
sich das Verhalten so einer Funktion innerhalb einer gleichbleibenden
Windows-Version àndert, ist eher theoretischer Natur, schließlich müsste MS
in einem solchen Falle auch ihre eigenen Programme durchforsten und
anpassen. Und bei Versionswechseln testet man sowas ohnehin.

In der Praxis ist es daher meist einfacher, sich die eingesetzten API-Calls
zu merken und bei neuen Windows-Versionen diese zu testen. Ich schreibe mir
für solche Zwecke ohnehin immer kleine Testprogràmmchen, bei denen ich die
Funktionen dann leicht durch Änderung der Parameter testen kann.

V ielleicht nicht state of the art (ist meine Bezahlung ja auch nicht :-) ),
aber bisher reicht's.

Ähnliche fragen