Bonjour,
Comment faire pour que l'application perde son focus (cad le rende au bureau) sans la minimiser?
Merci.
Bonjour,
Comment faire pour que l'application perde son focus (cad le rende au bureau) sans la minimiser?
Merci.
Voila un truc qui reactive le bureau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void button1_Click(object sender, EventArgs e) { // to Minimize all windows on the desktop . // first we get the type from the Shell . Application Type typeShell = Type.GetTypeFromProgID("Shell.Application"); // next we create the object " objShell " from the type " typeShell " object objShell = Activator.CreateInstance(typeShell); // finally we Invoke " MinimizeAll " to show the desktop typeShell.InvokeMember("MinimizeAll", System.Reflection.BindingFlags.InvokeMethod, null, objShell, null); }
Oups !
J'avais pas lu "Sans la minimiser"![]()
Merci Olibara,
je vais tester ceci :
Résultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8Form TheActiveForm=Form.ActiveForm ; // Le code d'Olibara Type typeShell = Type.GetTypeFromProgID("Shell.Application"); // next we create the object " objShell " from the type " typeShell " object objShell = Activator.CreateInstance(typeShell); // finally we Invoke " MinimizeAll " to show the desktop typeShell.InvokeMember("MinimizeAll", System.Reflection.BindingFlags.InvokeMethod, null, objShell, null); // Ensuite utiliser ShowWithoutActivation pour TheActiveForm() ;
Ca ne marche pas, ShowWithoutActivation est une property protected à overrider dans la Forme active. Et comme j'ai pas trop envie de modifier toutes les formes de mon appli, toujours pas de solution.
N'ayant rien trouvé, j'ai contourné le problème en créant par dessus la forme active de mon appli une petite form temporairequi devient la forme active pendant mon traitement batch et que je ferme ensuite.
Je ne mets pas "résolu" en attendant des suggestions pour une méthode plus propre.
Salut Graffito
J'ai aussi un peu cherché mais pas vraiment trouvé de solutions évidentes !!
Pourtant je suis certain qu'on doit pouvoir le faire auusi facilement qu'en clicquant avec ta souris sur le Desktop
Et a mon avis c'est plutot de ce coté la qu'il faudrait chercher : j'ai pas analysé exactement ce qu'on peut faire a partit du GetDeskTopWindow()
Mais il y a peut etre moyen de changer le focus par là ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] public static extern IntPtr GetDesktopWindow();
Partager