2009-09-08 5 views
0

Dans l'exemple de code suivant ... où filePath est: E:\[D]\My Collection (un dossier généré par picasa lors de l'archivage des médias) fonctionne correctement sur XP (32 bits). J'ai récemment couru cela sur Vista 64 bits ... et les erreurs ParseDisplayName avec "La valeur ne tombe pas dans la fourchette attendue." Tous les autres dossiers (sans le '[D]') fonctionnent bien. Toute aide serait appréciée.Le chemin valide n'est pas valide dans Vista en utilisant ParseDisplayName. Pourquoi?

 
try 
{ 
    int cParsed = 0; 
    int pdwAttrib = 0; 
    string filePath = Path.GetDirectoryName(file); 
    pidlMain = IntPtr.Zero; 
    folder.ParseDisplayName(IntPtr.Zero,IntPtr.Zero,filePath,out cParsed,out pidlMain,out pdwAttrib); 
} 
catch (Exception ex) 
{ 
Marshal.ReleaseComObject(folder); 
throw ex; 
} 
+0

J'ai aussi donné l'API Windows Code Pack un essai (sur Vista). http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=WindowsAPICodePack&DownloadId=6840 La démo de vignette incluse avec l'exemple de code s'est également écrasée sous les dossiers [D]. - Craig – clsturgeon

Répondre

0

Cela se produit (quel que soit le pack de code, vous pouvez repro en utilisant l'API shell directement et obtenir le nom l'analyse syntaxique) sur Vista lorsque vous sélectionnez les dossiers dans la boîte de dialogue Common File (ou tout autre type d'Open dialogue) dans l'arborescence de gauche. Par exemple, en utilisant l'exemple que vous avez mentionné - l'exemple du pack de codes. Exécutez l'exemple, sélectionnez parcourir, dans le CFD, sélectionnez votre dossier dans l'arborescence de gauche. Vous aurez également le même problème si vous allez dans le dossier, puis cliquez sur "Ouvrir". Le nom d'analyse que vous obtenez est:

c:\folder\folder (notez le dossier en double).

Ceci est un problème connu dans Vista ... Je crains qu'il n'y ait pas de patch pour elle (ou du moins que je suis au courant - à moins que vous passez à :-) Win7)

+0

Keeron - merci pour cela. Je vois ce que tu veux dire. Je dois trouver plus de temps pour examiner le reste du code API. Je dois encore trouver la réponse à ma question initiale. Merci encore. – clsturgeon

Questions connexes