Как сделать форму активной, Форма находится в DLL

Как сделать форму активной, Форма находится в DLL

procedure ShowMainForm;
{©Drkb v.3(2007): www.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;
Взято из http://forum.sources.ru Автор: Rouse_

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...