Est-il possible de restaurer une application tierce qui a été réduite au minimum à la SysTray? Appeler ShowWindow fonctionne correctement sur les applications réduites à la barre des tâches, mais lorsque l'application a été réduite au niveau de SysTray, il semble que son handle soit mis à zéro, et bien sûr ShowWindow ne le trouve pas.Comment restaurer une application à partir de SysTray? ShowWindow n'aide pas depuis le Handle = 0
Répondre
Un conseil utile de Adam Robinson et nobugz. M'a aidé à voir que ce que nous essayons pourrait même ne pas être possible. Trop dépend de la façon dont l'application se comporte en interne quand elle se cache et nous ne contrôlons pas cela ou même savons beaucoup à ce sujet. Nous devions aborder cela d'une autre direction.
L'application se trouve dans le SysTray en attente d'être activé via la souris de l'utilisateur en cliquant dessus, mais nous ne pouvons pas automatiser cela. Mais il y a une autre façon d '"activer" l'application et c'est en exécutant le fichier exe à nouveau. Dans ce cas, cela ne démarre pas une seconde instance, elle réactive simplement l'instance existante. Alors pourquoi ne pas Shell vers le fichier exe et réactiver l'application de cette façon? C'est ce que nous avons fait et c'est une solution de travail.
Non; Il existe différentes approches pour y parvenir (l'application peut fermer la fenêtre et en ouvrir une nouvelle lors de la restauration, ou simplement masquer la fenêtre d'origine et la montrer lors de la restauration). Il n'y a aucun processus particulier qu'une application doit suivre pour réaliser cette fonctionnalité, donc il n'y a aucun processus particulier qui peut être suivi afin de l'inverser.
Si vous avez des informations sur le comportement d'une application particulière et que vous souhaitez la traiter comme un cas spécifique, cela peut être possible. Mais une solution unique n'existe malheureusement pas.
Modifier
Vous pouvez essayer d'utiliser Process Explorer pour déterminer ce que (le cas échéant) poignées de fenêtre sont ouverts par le processus. Cela vous dira au moins s'il détruit ou cache la fenêtre.
Cela dépend entièrement de l'implémentation de l'application. L'approche la plus commune serait de créer une nouvelle fenêtre à partir de zéro au lieu d'en montrer une nouvelle.
Il obtient ses notifications d'icône de la barre via une fonction de rappel privé, vous ne pouvez pas vous tromper vous-même. Faking un clic de souris est très difficile à obtenir parce que vous ne pouvez pas savoir où se trouve l'icône. Je pense que vous êtes coincé.
des conseils utiles, merci. – hawbsl
- 1. Comment restaurer depuis le référentiel SVN
- 2. Graphics.CopyFromScreen à partir de Web = Le handle n'est pas valide
- 3. Obtention d'un handle de bouton à partir d'une autre application
- 4. Restaurer depuis Recyclebin (C#)
- 5. Comment créer une valeur de pulsation à partir de 0..1..0..1..0 etc pour une durée donnée?
- 6. ShowWindow de User32 n'agit pas comme prévu
- 7. Restaurer un fichier depuis Git?
- 8. Delphi: Réduire l'application à systray
- 9. SVN - Restaurer le référentiel à partir de la sauvegarde
- 10. Comment obtenir le handle de fenêtre d'une autre application réduite à la barre d'état système?
- 11. restaurer partiellement à partir de sql dump?
- 12. ShowWindow() ... mfc
- 13. Comment lancer le navigateur Safari depuis une application iPad?
- 14. Comment restaurer un fichier de vidage à partir de mysqldump?
- 15. Comment ajouter un contact depuis une application?
- 16. Restaurer l'application à partir du dock
- 17. Restaurer WindowState à partir de minimisé
- 18. Qu'est-ce que "ShowWindow Lib" user32 "" à propos de?
- 19. MDI Application minimiser/restaurer problème
- 20. ShowWindow et messageloop
- 21. Ouvrir une application iPhone depuis le terminal
- 22. Obtenir l'objet à partir du handle Windows
- 23. wxpython systray icône menu
- 24. Comment lancer Safari depuis une application iPhone?
- 25. Restaurer la pile app Android à partir de l'arrière-plan
- 26. stdout/cout à partir d'une application lancée depuis qt creator?
- 27. Comment obtenir le handle du formulaire le plus élevé dans une application WinForm?
- 28. Masquer le formulaire principal dans une application Delphi 2009
- 29. Recherche Google depuis une application iPhone
- 30. Télécharger une nouvelle application depuis une application iPhone
Lorsque vous dites que la poignée "est mise à zéro", comment obtenez-vous la poignée de la fenêtre? –
à partir du processus, via Process.GetProcessesByName, puis en utilisant myProcess.MainWindowHandle. Il est possible que j'embrouille la poignée de processus et la poignée de Windows. Aucun conseil? – hawbsl