Newsgroup: it.comp.lang.visual-basic
Titolo: Nomi lunghi con la funzione Command

Trasportando una icona su quella del mio programma, posso leggere il
percorso del file associato a quella icona tramite "Command" o la funzione
API "GetCommandLine". Tuttavia il percorso è restituito in formato 8.3 (ad
esempio  C:\PROGRA~1\abcdef~
1.xyz
), mentre io avrei bisogno di averlo in
formato "nomi lunghi" (come C:\Programmi\
abcdefghi.xyz
). Esiste un sistema
per raggiungere il mio obiettivo?
Grazie per il tempo dedicatomi.


A dire la verita' esiste gia' quella funzione API, e si chiama
GetFullPathName():
The GetFullPathName function retrieves the full path and filename of a
specified file.
DWORD GetFullPathName(
    LPCTSTR lpFileName, // address of name of file to find path for
    DWORD nBufferLength, // size, in characters, of path buffer
    LPTSTR lpBuffer, // address of path buffer
    LPTSTR *lpFilePart  // address of filename in path
   );
--
Roal Zanazzi
z...@iol.it


Riporto qui sotto quanto dice l'help delle API WIN32.
Ed in particolare:
"lpFilePart
Points to a variable that receives the address (in lpBuffer) of the final
filename component in the path. This filename component is the __long
filename__, if any, rather than __the 8.3 form__ of the filename."
Va bene che sono rincoglionito e che non ho mai usato questa API, ma quello
che c'e' scritto mi pare chiaro :-)
Oppure l'help non corrisponde a verita'?
--
Roal Zanazzi
z...@iol.it
The GetFullPathName function retrieves the full path and filename of a
specified file.
DWORD GetFullPathName(
    LPCTSTR lpFileName, // address of name of file to find path for
    DWORD nBufferLength, // size, in characters, of path buffer
    LPTSTR lpBuffer, // address of path buffer
    LPTSTR *lpFilePart  // address of filename in path
   );
Parameters
lpFileName
Points to a null-terminated string that specifies a valid filename. This
string can use either short (the 8.3 form) or long filenames.
nBufferLength
Specifies the size, in characters, of the buffer for the drive and path.
lpBuffer
Points to a buffer that contains the null-terminated string for the name of
the drive and path.
lpFilePart
Points to a variable that receives the address (in lpBuffer) of the final
filename component in the path. This filename component is the long
filename, if any, rather than the 8.3 form of the filename.
Return Values
If the GetFullPathName function succeeds, the return value is the length, in
characters, of the string copied to lpBuffer, not including the terminating
null character.
If the lpBuffer buffer is too small, the return value is the size of the
buffer, in characters, required to hold the path.
If the function fails, the return value is zero. To get extended error
information, call GetLastError.
Remarks
The GetFullPathName function merges the name of the current drive and
directory with the specified filename to determine the full path and
filename of the specified file. It also calculates the address of the
filename portion of the full path and filename. This function does not
verify that the resulting path and filename are valid or that they refer to
an existing file on the associated volume.

Grazie mille, carissimi Franco Stefanelli e Roal Zanazzi (in ordine
alfabetico) per la sollecitudine e l'impegno profuso nel rispondere alla mia
domanda.
Devo purtroppo comunicarvi che, data la mia scarsa esperienza con le WINAPI,
tornerň presto a tormentare i vostri sonni e quelli degli altri amici del
newsgroup con le mie domande :-).
Ringraziandovi ancora e sperando di diventare presto abbastanza bravo da
potere a mia volta aiutare qualcuno sul NG, vi saluto caramente.