已知一个文件夹的句柄,文件夹名称,怎样得到文件夹的路径?请大家帮助?

解决方案 »

  1.   

    引自SDK文档:The GetFileTitle function returns the name of the file identified by the lpszFile parameter. short GetFileTitle(    LPCTSTR lpszFile, // pointer to full path and filename for file
        LPTSTR lpszTitle, // pointer to buffer that receives filename
        WORD cbBuf  // length of buffer
       );
     ParameterslpszFilePointer to the name and location of a file. lpszTitlePointer to a buffer into which the function is to copy the name of the file. cbBufSpecifies the length, in characters, of the buffer pointed to by the lpszTitle parameter.  Return ValuesIf the function succeeds, the return value is zero. 
    If the filename is invalid, the return value is a negative number. 
    If the buffer pointed to by the lpszTitle parameter is too small, the return value is a positive integer that specifies the required buffer size, in bytes (ANSI version) or characters (Unicode version). The required buffer size includes the terminating null character. ResThe GetFileTitle function returns an error value if the buffer pointed to by the lpszFile parameter contains any of the following elements: ?An empty string 
    ?A string containing a wildcard (*), opening bracket ([), or closing bracket (]) 
    ?A string that ends with a colon (:), slash  (/), or backslash (\) 
    ?A string whose length exceeded the length of the buffer 
    ?An invalid character (for example, a space or an unprintable character) To get the buffer size needed for the name of a file, call the function with lpszTitle set to NULL and cbBuf set to zero. The function will return the required size. 
    GetFileTitle returns the string that the system would use to display the filename to the user. The display name includes an extension only if that is the user's preference for displaying filenames. This means that the returned string may not accurately identify the file if it is used in calls to file system functions.If the lpszTitle buffer is too small, GetFileTitle returns the size required to hold the display name. There is no guaranteed connection between the required size and the characters originally specified in the lpszFile buffer. In porting applications to Windows 95 and Windows NT, developers will need to update any code that relies on such behavior in previous versions of the operating system. The most common case is code that deliberately calls GetFileTitle with lpszTitle set to NULL and cbBuf set to zero, and then uses the return value as an index into the lpszFile string. This technique is no longer supported. You can usually achieve similar results (and superior performance) with run-time library functions such as strrchr, wcsrchr, and _mbsrchr.