Estoy tratando de traer un primer plano de la ventana. Estoy usando este código Pero no está funcionando. ¿Podría alguien ayudarme?¿Cómo traer un primer plano de ventana usando C#?
ShowWindowAsync(wnd.hWnd, SW_SHOW);
SetForegroundWindow(wnd.hWnd);
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16
// Converted to C# by Kevin Gale
IntPtr foregroundWindow = GetForegroundWindow();
IntPtr Dummy = IntPtr.Zero;
uint foregroundThreadId = GetWindowThreadProcessId(foregroundWindow, Dummy);
uint thisThreadId = GetWindowThreadProcessId(wnd.hWnd, Dummy);
if (AttachThreadInput(thisThreadId, foregroundThreadId, true))
{
BringWindowToTop(wnd.hWnd); // IE 5.5 related hack
SetForegroundWindow(wnd.hWnd);
AttachThreadInput(thisThreadId, foregroundThreadId, false);
}
if (GetForegroundWindow() != wnd.hWnd)
{
// Code by Daniel P. Stasinski
// Converted to C# by Kevin Gale
IntPtr Timeout = IntPtr.Zero;
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, Timeout, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Dummy, SPIF_SENDCHANGE);
BringWindowToTop(wnd.hWnd); // IE 5.5 related hack
SetForegroundWindow(wnd.hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Timeout, SPIF_SENDCHANGE);
}
del Código explicó
Realización de una ventana de la ventana en primer plano requiere algo más que llamar a la API SetForegroundWindow. Debe primero determinar el hilo de primer plano y conectarlo a su ventana, usando AttachThreadInput, luego llame al SetForegroundWindow. De esa forma pueden compartir estados de entrada.
Primero llamo GetForegroundWindow a obtengo el control de la ventana actual de primer plano . A continuación, algunas llamadas a GetWindowThreadProcessId recuperan los hilos asociados con la ventana actual de primer plano y la ventana I desea poner en primer plano. Si estos hilos son los mismos, una llamada simple a SetForegroundWindow es todo que es necesario. De lo contrario, el hilo de primer plano se adjunta a la ventana que traigo al frente y se separó de lo que era la ventana actual de primer plano . La API AttachThreadInput se encarga de esto.
Contenido tomado de here Gracias.
Código malvado, votando para cerrar. –
No puedo entender el código también. Pero creo que el tema no estaría cerrado. Estoy esperando por posibles soluciones –
@Nikil, mayb solo guarde el título y elimine (olvide) ese código? –