Ouvrir une fenêtre explorateur en mode modal, ou au moins récupérer un événement quand elle se ferme !
Bonjour,
Dans un programme, j'ai un bouton qui permet d'ouvrir un explorateur positionné sur un dossier, afin que l'utilisateur puisse effectuer des tâches dedans.
Je souhaite pouvoir récupérer dans mon programme l'était du dossier une fois que la personne revient dedans...
J'ai imaginé 3 solutions :
1/ Fenêtre modale
La plus simple des solutions. Ouverture de l'explorateur en mode modal, donc mon programme reste bloqué tant que la fenêtre est ouverte. Puis quand l'explorateur est fermé, retour dans mon programme là où il s'était arrêté, et youpi ni vu ni connu je peux recharger le contenu du dossier au retour de l'utilisateur.
=> Sauf que là, je trouve pas du tout comment faire...
2/ Être notifié de la fermeture de l'explorateur
N'arrivant pas à ouvrir l'explorateur en mode modal, j'ai tenté de créer un process et de récupérer l'événement Exited, pour recharger le dossier quand l'explorateur est fermé. Mais cela ne fonctionne pas (l'événement se déclenche avant même que l'explorateur ne s'ouvre) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
private void BtnOpenOut_Click(object sender, EventArgs e)
{
Process p = new Process()
{
EnableRaisingEvents = true,
StartInfo = new ProcessStartInfo("explorer.exe", Station.OutFolder)
};
p.Exited += P_Exited;
p.Start();
}
private void P_Exited(object sender, EventArgs e)
{
RefreshFilesIn();
RefreshFilesOut();
} |
3/ Rafraîchir la fenêtre de mon program à intervalle régulier tant que la fenêtre de l'explorateur n'est pas fermée.
Sauf que là ça va m'obliger à surveiller les process système, donc potentiellement besoin de droits administrateur, etc. Et en plus ça va être très moche... (sapin de Noël...)
Avez-vous une meilleure solution ?
Une idée de pourquoi ma solution 2 ne fonctionne pas ?