Code:

procedure ShowMainForm;

{©Drkb v.3www.drkb.ru}

var

hWnd, hCurWnd, dwThreadID, dwCurThreadID: THandle;

OldTimeOut: DWORD;

AResult: Boolean;

begin

ShowWindow(Application.Handle, SW_RESTORE);

Application.MainForm.Visible := True;   // Показываем главную форму

 

// Ставим нашу форму впереди всех окон

hWnd := Application.Handle;

SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @OldTimeOut, 0);

SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(0), 0);

SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);

hCurWnd := GetForegroundWindow;

AResult := False;

while not AResult do

begin

   dwThreadID := GetCurrentThreadId;

   dwCurThreadID := GetWindowThreadProcessId(hCurWnd);

   AttachThreadInput(dwThreadID, dwCurThreadID, True);

   AResult := SetForegroundWindow(hWnd);

   AttachThreadInput(dwThreadID, dwCurThreadID, False);

end;

SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE);

SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, Pointer(OldTimeOut), 0);

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!