J'essaie de créer un système d'enregistrement/lecture de macros de base. Si je voulais sélectionner une application ouverte (comme le bloc-notes) pour l'amener au premier plan, comment pourrais-je l'appeler par son nom ou un autre attribut référençable?C# Comment sélectionner une fenêtre d'application ouverte
Répondre
Voici un exemple. Fondamentalement, obtenir le Process, puis appelez SetForegroundWindow sur son MainWindowHandle:
using System;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
namespace StackOverflow.Test
{
class Program
{
static void Main(string[] args)
{
var proc = Process.GetProcessesByName("notepad").FirstOrDefault();
if (proc != null && proc.MainWindowHandle != IntPtr.Zero)
SetForegroundWindow(proc.MainWindowHandle);
}
[DllImport("user32")]
private static extern bool SetForegroundWindow(IntPtr hwnd);
}
}
Vous devez être conscient des restrictions:
Le système restreint qui traite peut définir la fenêtre de premier plan. Un processus peut régler la fenêtre de premier plan que si l'une des conditions suivantes est remplie:
- Le processus est le processus de premier plan.
- Le processus a été démarré par le processus de premier plan.
- Le processus a reçu le dernier événement d'entrée.
- Il n'y a pas de processus de premier plan.
- Le processus de premier plan est en cours de débogage.
- Le premier plan n'est pas verrouillé (voir LockSetForegroundWindow).
- Le délai de verrouillage du premier plan a expiré (voir SPI_GETFOREGROUNDLOCKTIMEOUT dans SystemParametersInfo).
- Aucun menu n'est actif.
Vous pouvez commencer par utiliser Process.GetProcesses
- cela vous donnera une liste de tous les processus en cours. Examiner les différentes propriétés de chaque processus - cela devrait vous aider à démarrer.
Le problème auquel je suis confronté est comment faire de cette fenêtre de processus la fenêtre active. – ashurexm
Payer une application nommée "Autohotkey", elle fait tout ce dont vous avez besoin et vous fait gagner beaucoup de temps de programmation, et c'est gratuit.
Si autohotkey ne résout pas vos problèmes ou si vous faites cela à des fins d'apprentissage, quelqu'un a demandé une application « flambant neuf », etc., il y a des liens qui peuvent être utiles:
Bringing Window to the Front in C# using Win32 API http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesvbcs/thread/92823775-29f6-4950-bf06-d2f1ca89ec8d (il est dit "fenêtres mobiles" mais peut toujours être utile)
Espérons que cela aide.
J'ai effectivement regardé autohotkey. Il est certainement une application utile, le problème est que cela doit être un type de chose en interne en raison de restrictions de tiers et l'utilisation future prévue (macro entrée basée sur des listes de sélection, etc) – ashurexm
- 1. C++ fenêtre ouverte bonjour monde
- 2. fenêtre ouverte IE8
- 3. Fenêtre Flex ouverte derrière la fenêtre active
- 4. fenêtre ouverte derrière le navigateur
- 5. onclick fenêtre ouverte et la taille spécifique
- 6. Ouvrir le lien e-mail dans une fenêtre ouverte existante
- 7. Obtenir la dernière fenêtre active: Get La fenêtre précédemment ouverte
- 8. Trouver fenêtre précédemment ouverte par window.open
- 9. Fenêtre enfant ouverte à l'intérieur du formulaire de fenêtre principale
- 10. fenêtre ouverte à partir de xaml
- 11. sur le navigateur de la fenêtre ouverte
- 12. Fermer une fenêtre ouverte sur un safari mobile avec javascript?
- 13. Attacher un gestionnaire onload sur une fenêtre ouverte par Javascript
- 14. Remplir et soumettre un formulaire pour une fenêtre nouvellement ouverte
- 15. comment savoir si la fenêtre est ouverte - PHP/Javascript?
- 16. Comment obtenir hWnd de fenêtre ouverte par ShellExecuteEx .. hProcess?
- 17. X/Gnome: Comment mesurer la géométrie d'une fenêtre ouverte
- 18. Détermine si la fenêtre a été ouverte par window.showModalDialog?
- 19. Comment fermer une fenêtre en C#
- 20. comment créer une fenêtre en c
- 21. C#: Comment tuer une fenêtre singleton
- 22. Détection de l'événement onload d'une fenêtre ouverte avec window.open
- 23. Fenêtre ouverte à partir de l'applet (Bang! Howdy)
- 24. fenêtre d'information ouverte si utilisateur passe plus de x millisecondes
- 25. Comment forcer la suppression des cookies même si une fenêtre est toujours ouverte?
- 26. Comment tuer la dernière fenêtre Internet Explorer ouverte en utilisant une commande?
- 27. Comment fermer une fenêtre de console "orpheline" qui a été ouverte depuis Visual Studio?
- 28. Comment savoir si une fenêtre avec un titre donné est déjà ouverte dans Tk?
- 29. Comment rendre la cible de la règle de redirection seam ouverte dans une nouvelle fenêtre?
- 30. Comment écrire des scripts WATIN pour une fenêtre enfant ouverte avec window.open?
Merci beaucoup pour un très détaillé répondre. Je vais essayer de mettre en œuvre cela immédiatement. – ashurexm
Cela semble fonctionner, mais j'ai un problème particulier. Je l'ai posé comme une nouvelle question ici: http://stackoverflow.com/questions/3973532 – ashurexm