Comment puis-je savoir si l'utilisateur a lancé l'application de console en double-cliquant sur le fichier EXE (ou un raccourci) ou si une fenêtre de ligne de commande était déjà ouverte et exécutée dans cette session?Comment pouvez-vous déterminer comment une application de console a été lancée?
Répondre
Vous pourriez être en mesure de le comprendre par P/Appel à la fonction Win32 GetStartupInfo().
[DllImport("kernel32", CharSet=CharSet.Auto)]
internal static extern void GetStartupInfo([In, Out] STARTUPINFO lpStartupInfo);
bâton ce champ statique dans votre « Program
» classe pour assurer qu'il fonctionne avant toute sortie:
static bool StartedFromGui =
!Console.IsOutputRedirected
&& !Console.IsInputRedirected
&& !Console.IsErrorRedirected
&& Environment.UserInteractive
&& Environment.CurrentDirectory == System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location)
&& Console.CursorTop == 0 && Console.CursorLeft == 0
&& Console.Title == Environment.GetCommandLineArgs()[0]
&& Environment.GetCommandLineArgs()[0] == System.Reflection.Assembly.GetEntryAssembly().Location;
Ceci est un peu overkill/paranoïaque, mais capte être démarré à partir de l'Explorateur sans répondre à des choses comme cls && app.exe
(en vérifiant le chemin complet) ou même cls && "f:\ull\path\to\app.exe"
(en regardant le titre). J'ai eu l'idée de win32 version of this question.
J'ai ajouté un deuxième champ 'statique bool startedFromVisualStudio = \t \t \t \t! Console.IsOutputRedirected \t \t \t \t &&! Console.IsInputRedirected \t \t \t \t &&! Console.IsErrorRedirected \t \t \t \t && Environment.UserInteractive \t \t \t \t && Environment.CurrentDirectory == System.IO.Path.GetDirectoryName (System.Reflection.Assembly.GetEntryAssembly(). Situation) \t \t \t \t && Console.CursorTop == 0 && Console.CursorLeft == 0 \t \t \t \t && Environment.GetCommandLineArgs() [0] .Contains ("vshost"); 'pour attendre également une pression sur une touche à partir de VS – JCH2k
- 1. Comment déterminer quel contrôle a été touché?
- 2. Déterminer si une activité spécifique d'une application peut être lancée
- 3. Comment déterminer si une entité a été enregistrée?
- 4. Comment déterminer si une image a été modifiée?
- 5. Comment déterminer si une URL asp.net a été "réécrite"?
- 6. Une exception non gérée a été lancée par l'application
- 7. Comment puis-je détecter quand une exception a été lancée globalement en Java?
- 8. Est-il possible de déterminer comment l'application a été construite?
- 9. Comment déterminer si itérateur de sortie a été modifié
- 10. Comment boucler une application console
- 11. Comment déployer une application de console
- 12. Comment déterminer quel noeud a été cliqué. Silverlight treeview
- 13. Déterminer si une application Facebook a été mise en signet à partir de l'API Facebook REST
- 14. Comment puis-je déterminer si un UILabel a été touché?
- 15. .NET - Comment déterminer quel Model3DGroup a été cliqué?
- 16. Comment déterminer quand la fin du fichier a été atteinte?
- 17. JQuery: Comment déterminer si un bouton radio a été sélectionné?
- 18. Comment désactiver le menu contextuel dans une application externe lancée
- 19. Comment savoir si l'application iPhone a été lancée en arrière-plan ou non
- 20. Erreur de configuration - Une exception a été lancée par la cible d'une invocation
- 21. Déterminer si une commande Powershell a été réussie
- 22. asp MVC: Est-il possible de déterminer comment une méthode de contrôleur a été appelée?
- 23. Comment fermer une fenêtre de console "orpheline" qui a été ouverte depuis Visual Studio?
- 24. Comment empêcher la fermeture de la fenêtre de console lors de l'exécution d'une application de console?
- 25. Comment puis-je déterminer quel framework a été utilisé pour créer une application de bureau Windows particulière?
- 26. Déterminer quand une requête XMLHttpRequest a été effectuée sans rappels
- 27. Déterminer quelle ligne une fonction a été exécutée à partir
- 28. Comment puis-je déterminer si une valeur dans une structure a été modifiée?
- 29. Comment faire une application console C# multilingue?
- 30. Comment implémenter MVP dans une application console?
duplication possible de [Une application de console Win32 peut-elle détecter si elle a été exécutée à partir de l'explorateur ou non?] (Http://stackoverflow.com/questions/510805/can-a-win32-console-application-detect- si-it-has-been-run-de-la-explorateur ou non) – joshuapoehls