Я пытаюсь вывести окно на передний план. Я использую этот код. Но это не работает. Не могли бы вы помочь?
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);
}
Code Explained
Создание окна в качестве окна переднего плана требует большего, чем просто вызов SetForegroundWindow API. Вы должны сначала определите поток переднего плана и прикрепите его к своему окну, используя AttachThreadInput, затем вызовите SetForegroundWindow. Таким образом они могут разделять состояния ввода.
Сначала я вызываю GetForegroundWindow, чтобы получить ручку текущего окно переднего плана. Затем несколько звонков GetWindowThreadProcessId получить потоки, связанные с текущим окно переднего плана и окно I хочу вывести на передний план. Если эти темы такие же простые вызов SetForegroundWindow - это все это необходимо. В противном случае нитка переднего плана прикреплена к окно, которое я несу впереди и отделился от того, что было текущим окно переднего плана. В Этим занимается API AttachThreadInput.
Содержимое взято из здесь Спасибо.