Je fais la fenêtre d'une autre application pour s'assurer qu'un clic dans mon application amène le dialogue de l'autre dans les vues. Le problème que j'ai est que je ne me concentre pas sur mon application après l'appel. Si l'autre application a plus de fenêtres, l'une d'entre elles finit par avoir le focus, et sinon aucune fenêtre (en regardant uniquement la barre des tâches) n'est mise au point. Où dois-je commencer à enquêter sur le problème?focus perdu après avoir fait la fenêtre d'une autre application topmost
Mon code pour faire l'autre de l'application est le plus élevé:
Process p = Process.GetProcessById(trackedProcessID);
IntPtr h = p.MainWindowHandle;
uint TOPMOST_FLAGS = SWP_NOMOVE | SWP_NOSIZE | SWP_ASYNCWINDOWPOS;
SetWindowPos(h, HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS);
avec des constantes
public static readonly uint SWP_NOMOVE = 0x0002;
public static readonly uint SWP_NOSIZE = 0x0001;
public static readonly uint SWP_ASYNCWINDOWPOS = 0x4000;
public static readonly IntPtr HWND_TOPMOST = new IntPtr(-1);
Très intéressant! Mais même si ma deuxième application ne dispose que d'une fenêtre visible (encore une fois, depuis la barre des tâches qui pourrait ne pas être une bonne source), je m'attendais à ce que la boîte de dialogue dans l'autre application mette le focus. Ou? – Oskar
Non, pas nécessairement, vous auriez besoin de retourner focus (en fait le terme ici est correctement z-order) à votre application. –
Pourrais-je faire cela en alignant l'autre application juste devant moi dans l'ordre Z, ou dois-je obtenir l'autre application pour me pousser vers le haut (s'il vous plaît dites-moi que je peux ...) – Oskar