2010-12-12 12 views
3

Est-il possible de définir ou d'obtenir le répertoire initial utilisé par la boîte de dialogue d'ouverture de fichier vista sans définir la propriété InitialDirectory dans la boîte de dialogue d'ouverture de fichier?.net windows api: obtient ou définit le répertoire le plus récent utilisé par la boîte de dialogue d'ouverture de fichier

Je veux que mon WPF (au démarrage) définisse le dossier par défaut une fois pour toutes les boîtes de dialogue Ouvrir/Enregistrer. Si vous remarquez dans Vista aussi longtemps que la machine est en cours d'exécution, elle continue à utiliser par défaut le dernier répertoire sélectionné de l'utilisateur à partir de n'importe quel fichier ouvert/enregistré sous forme de boîtes de dialogue. Bloc-notes ou des programmes agissent de cette façon.

La raison pour laquelle j'essaye d'accomplir ceci est parce que je ne veux pas avoir à le suivre dans mon application, en réglant et en sauvegardant le dossier. Je voudrais juste définir le défaut et laisser Vista suivre après cela.

Directory.SetCurrentDirectory ne le fait pas.

Répondre

3

Vous excluez exactement ce que vous avez à faire pour résoudre votre problème. Si vous ne définissez pas InitialDirectory, la boîte de dialogue utilise le dernier répertoire utilisé. Cette information est stockée dans le registre, indexée par nom de processus. Vous ne pouvez pas désactiver ce comportement de manière sélective.

La clé de registre utilisée a été modifiée entre la version Windows. Je pense que sur Win7 il est maintenant HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ComDlg32 \ LastVisitedPidlMRU. Il n'est plus en clair comme c'était le cas sur les versions antérieures. Si vous voulez risquer d'essayer d'analyser les valeurs de clé listées ici, assurez-vous de vérifier la version de Windows. Franchement, cela ne vaut pas le code simple que vous auriez à écrire pour initialiser la propriété InitialDirectory.

0

Si vous ne voulez pas avoir à écrire du code pour continuer à charger et enregistrer le répertoire pour OpenFileDialog, écrivez une fonction wrapper qui fait cela, puis appelez simplement votre fonction wrapper ...