Lors de l'installation de n'importe quelle application. En général, l'utilisateur a été invité à fermer toutes les fenêtres avant le début de l'installation. sinon l'installation s'arrêtera au milieu et demandera à l'utilisateur de fermer toutes les fenêtres ouvertes. On m'a demandé d'ajouter un code dans une application XXX. Lorsque l'application est en cours d'exécution et si l'utilisateur ouvre une autre fenêtre (ex: Explorer, navigateur, mot etc ..) alors l'application devrait lancer une fenêtre en disant que vous avez ouvert la liste des fenêtres. Je vous prie de me suggérer comment commencer en C#.Récupère la liste des fenêtres ouvertes C#
Répondre
Essayez SetWinEventHook Fonction WinAPI via P/Invoke. Vous pouvez accrocher EVENT_OBJECT_CREATE
événement, mais je ne suis pas sûr à 100%. Je ne l'ai jamais fait en C#, seulement en C/C++.
Vous pouvez utiliser la classe System.Diagnostics.Process
pour obtenir les informations de tous les processus en cours d'exécution sur votre machine. Ensuite, vous pouvez essayer de trouver si l'application/le processus prévu est en cours d'exécution ou non. Vous pouvez utiliser la méthode GetProcesses()
ou GetProcessByName()
. Reportez-vous this msdn link pour référence. Je suis sûr qu'il peut y avoir un moyen plus efficace de parvenir au même résultat. HTH
Test cette:
var openWindowProcesses = System.Diagnostics.Process.GetProcesses()
.Where(p => p.MainWindowHandle != IntPtr.Zero && p.ProcessName != "explorer");
Le openWindowProcesses
devrait contenir toutes les applications ouvertes qu'ils ont une fenêtre principale active.
Je mets p.ProcessName != "explorer"
dans l'expression where car l'explorateur est le processus principal du bureau et il ne devrait jamais être fermé.
Pour observer l'exécution des processus, vous pouvez utiliser la classe ManagementEventWatcher
. Voir this s'il vous plaît.
Mettre en place une boucle foreach comme celui-ci d'énumérer sur toutes les applications ouvertes sur votre système (qui ont une fenêtre principale visible)
foreach (var process in Process.GetProcesses().Where(p => p.MainWindowHandle != IntPtr.Zero)) {
//do something with the process here. To display it's name, use process.MainWindowTitle
}
Que faire si une application a plusieurs fenêtres visibles? – Neolisk
- 1. Détermination de l'ordre des fenêtres ouvertes
- 2. Comment obtenir la liste des fenêtres ouvertes de xserver
- 3. Obtenir la liste des fenêtres ouvertes en Python
- 4. Minimisation toutes les fenêtres ouvertes en C#
- 5. C++ Moniteur - Trouver toutes les fenêtres visibles/ouvertes
- 6. Java liste des sources ouvertes
- 7. Obtenir la liste des fenêtres ouvertes forment par exemple qui sont excuted de différents assemblage
- 8. Comment fermer toutes les fenêtres ouvertes de mon programme C#?
- 9. Récupère la liste des méthodes d'une classe
- 10. Suivi des fenêtres ouvertes et de leurs titres
- 11. Compte le nombre de fenêtres ouvertes
- 12. Récupère la liste des fichiers de l'URL
- 13. Duplication d'écouteurs d'événements lorsque plusieurs fenêtres sont ouvertes (extension Firefox)
- 14. Visual Studio Automation: énumération des fenêtres ouvertes lors du chargement de la solution
- 15. Fenêtres ouvertes du navigateur sans barres de menus (JavaScript?)
- 16. Prendre diff de deux fenêtres ouvertes verticalement dans Vim
- 17. fenêtre pour un processus de démarrage en C# montre derrière mes fenêtres ouvertes actuelles
- 18. Obtenir une liste des connexions ouvertes avec JBoss
- 19. Récupère la liste des colonnes de contraintes uniques (en TSQL)?
- 20. Récupère la liste des gemmes utilisées par un projet Bundler
- 21. Récupère la liste des {} templates de String [PHP]
- 22. UITableView - Récupère la liste des UITableViewCells dans un indexPath.section
- 23. Liste des fenêtres classées par récemment utilisées
- 24. Récupère la liste parente d'un objet gridview
- 25. Récupère la liste brute de OrderedEnumerable
- 26. Récupère la première liste d'une chaîne
- 27. Comment faire pour afficher des TIPS et ouvrir d'autres fenêtres ouvertes
- 28. fenêtres de clôture qui ont été ouvertes par la recherche requête
- 29. Comment détecter la zone de contact dans les fenêtres ouvertes dans Android?
- 30. Affichage de toutes les fenêtres ouvertes dans la page principale WPF
Pour résoudre le problème décrit vous devez obtenir la liste de la fenêtre par minuterie. Et qu'en est-il des fenêtres cachées? – DReJ
Je pense que qui a posé cette question sait à propos de l'utilisation des timers et ... Et des fenêtres cachées; Je pense qu'il suffit de fermer les processus avec des fenêtres non masquées dans de tels scénarios. Bien que dans ces situations, les processus sont plus importants que les fenêtres. Le programmeur devrait vérifier les processus pour savoir lequel ne devrait pas être ouvert. Ceci est facilement possible en changeant l'expression dans la méthode Where. Mais merci! Je vais ajouter quelques informations sur les processus de surveillance dans ma réponse. –
merci beaucoup pour votre suggestion. Une fois que j'implémenterai je vous ferai connaître le résultat – user517206