Comment s’assurer que la fenêtre de processus lancée par Process.Start (ProcessStartInfo) concerne toutes les formes?

c # .Comment s’assurer que la fenêtre de processus lancée par Process.Start (ProcessStartInfo) a pour object tous les formulaires? Merci,

L’utilisation de SetForegroundWindow et d’autres méthodes de définition du focus est soumise à de nombreuses ressortingctions. Si vous voulez vraiment être sûr que le processus démarré recevra le focus, je vous recommande d’utiliser les fonctions natives (non gérées) suivantes

 SystemParametersInfo (SPI_GETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)&dwLockedTimeout, 0); SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)0, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE); 

avant le démarrage et la restauration du processus

 SystemParametersInfo (SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (PVOID)&dwLockedTimeout, SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE); 

à la fin. Un appel comme

 WaitForInputIdle (pi.hProcess, 5000); 

après le démarrage du programme et avant la restauration de SPI_SETFOREGROUNDLOCKTIMEOUT peut également être utile si vous rencontrez des problèmes avec

Process.Start renvoie un object Process. Pour donner le focus au processus, configurez d’abord le PInvoke suivant:

 [DllImport("user32.dll")] static extern bool SetForegroundWindow(IntPtr hWnd); 

Ensuite, utilisez:

 MyProcess = Process.Start(ProcessStartInfo); SetForegroundWindow(MyProcess.MainWindowHandle);