Как сделать форму активной, Форма находится в DLL Delphi , Программа и Интерфейс , Формы Как сделать форму активной, Форма находится в DLL
Code:
procedure ShowMainForm;
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_
Как сделать форму активной, если она находится в DLL и не является основной формой приложения.
Комментарии и вопросы Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Формы ::