[ad_1]
Estoy trabajando en un código C# que minimiza todas las instancias abiertas del Bloc de notas. Este código funciona bien en Windows 10, pero cuando ejecuto el mismo archivo ejecutable con privilegios de administrador, minimiza solo una instancia del Bloc de notas (fuera de la abierta 3…).
Mi código para esto es el siguiente. Cualquier ayuda es muy apreciada. Gracias
Lo que he probado:
class Program { private const int SW_SHOWNORMAL = 1; private const int SW_SHOWMINIMIZED = 2; private const int SW_SHOWMAXIMIZED = 3; [DllImport("user32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow); [DllImport("user32.dll")] private static extern bool MinimizeWindow(System.IntPtr hwnd); static void Main(string[] args) { System.Diagnostics.Process thisProcess = System.Diagnostics.Process.GetCurrentProcess(); System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("notepad"); foreach (System.Diagnostics.Process process in processes) { if (process == thisProcess) continue; System.IntPtr handle = process.MainWindowHandle; if (handle == System.IntPtr.Zero) continue; IntPtr s1 = process.MainWindowHandle; ShowWindowAsync(s1, SW_SHOWMINIMIZED); } } }
Solución 2
Mire en el Administrador de tareas, en la pestaña Detalles, y encontrará que no importa cuántas VENTANAS del Bloc de notas tenga abiertas, solo hay una instancia de Notepad.exe y solo un “MainWindowHandle”.
En Windows 10, habrá una instancia de Notepad.exe PARA CADA VENTANA DEL Bloc de Notas, cada una con su propio “MainWindowHandle”.
Básicamente, tienes que trabajar un poco para encontrar todas las ventanas secundarias del Bloc de notas y minimizar cada una de ellas. No, no hay nada directamente en .NET BCL que haga eso por usted.
[ad_2]
コメント