que abrir un bloc de notas de mi programa usando Process.Start()
pero la nueva libreta abierta cubre la pantalla. Pero sí quiero que mi aplicación mantenga su foco.¿Cómo establecer el foco de regreso a la forma después de abrir un proceso (Bloc de notas)?
que de manera similar (usando el mismo Process.Start) abrir MS Excel y Word pero para conseguir centrarse de nuevo a mi forma todo lo que necesito para escribir es:
this.Focus();
Pero Quirk con el Bloc de notas: Abro el bloc de notas (y todos los otros procesos como este)
Process process = new Process();
process.StartInfo.UseShellExecute = true;
process.EnableRaisingEvents = true;
process.StartInfo.FileName = @"abc.log";
process.Start();
Ahora el bloc de notas toma el foco.
he probado todas estas:
this.Activate()
,this.Focus()
, hace falta mencionar[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] public static extern IntPtr SetFocus(HandleRef hWnd); { IntPtr hWnd = myProcess.Handle; SetFocus(new HandleRef(null, hWnd)); }
[DllImport("User32")] private static extern int SetForegroundWindow(IntPtr hwnd); [DllImportAttribute("User32.DLL")] private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); private const int SW_SHOW = 5; private const int SW_MINIMIZE = 6; private const int SW_RESTORE = 9; { ShowWindow(Process.GetCurrentProcess().MainWindowHandle, SW_RESTORE); SetForegroundWindow(Process.GetCurrentProcess().MainWindowHandle); }
Otra solución más largas obtuvo de here.
Todo lo cual sigue centrado en el bloc de notas. ¿Por qué es tan difícil simplemente concentrarse en una ventana, esa también la ventana de la aplicación?
EDIT: En el mejor puedo abrir el bloc de notas reduce al mínimo, pero aún no le daría el foco a la forma después de probar todos los códigos anteriores. El bloc de notas se abre al mínimo, pero el foco seguirá en el bloc de notas (algo que a veces vemos en Windows XP) y la forma estará fuera de foco.
¿Está bien empezar la ventana en un estado minimizado? – NoviceProgrammer
Sí, está bien, pero no funcionaría aún. Lo actualizaré en mi pregunta – nawfal
¿Has probado esto? http://stackoverflow.com/questions/2121911/starting-a-process-without-stealing-focus-c – NoviceProgrammer