Uzyskaj pełną ścieżkę z nazwą pliku Unicode

Mam ścieżkę w wersji krótkiej lub w formacie DOS („C: / DOCUME ~ 1” np.) i chcesz uzyskać pełną ścieżkę / długą ścieżkę (ścieżka„C: / Dokumenty i ustawienia” na przykład).

Próbowałem api GetLongPathName. Zadziałało. Ale gdy mamy do czynienia z nazwą pliku Unicode, okazuje się to niepowodzeniem.

Private Declare Function GetLongPathName Lib "kernel32" Alias _
    "GetLongPathNameA" (ByVal lpszShortPath As String, _
    ByVal lpszLongPath As String, ByVal cchBuffer As Long) As Long

Próbowałem aliasu GetLongPathNameW zamiast tego, ale wydaje się nic nie robić, dla BOTH Unicode i nie-Unicode nazwa pliku, zawsze zwraca 0. W MSDN jest tylko artykuł o GetLongPathNameW dla C / C ++, nie dla VB / VBA. Czy mogę zrobić coś złego?

Czy istnieje rozwiązanie tego problemu? Spędzam godziny w Google i StackOverflow, ale nie mogę się tego dowiedzieć.

Pozdrowienia,

questionAnswers(2)

yourAnswerToTheQuestion