Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2016.07.24;
Скачать: CL | DM;

Вниз

Вынести окно на первый план   Найти похожие ветки 

 
TStas   (2009-10-12 19:47) [0]

Окно - блокнот виндов.  

NotePadHandle := FindWindow("notepad", "Áåçûìÿííûé - Áëîêíîò");

 If NotePadHandle = 0 then //Íåòó?
   // - Äà, íåòó, ñîçäàþ
   NotePadHandle := WinExec("Notepad", SW_SHOW)
 else
   Begin
   SetForegroundWindow(NotePadHandle);
   End;

Всё работает, пока блокнот не свернули. А вот свёрнутый не хочет разворачиваться и всё.
Это не критично важно, но любопытно. Читал в одной книжке, что так и должно быть.


 
CrytoGen   (2009-10-12 19:50) [1]

ShowWindow с SW_RESTORE попробуй


 
clickmaker ©   (2009-10-14 09:55) [2]

> ShowWindow с SW_RESTORE попробуй

+ IsIconic()


 
DVM ©   (2009-10-14 14:59) [3]


function ForceForegroundWindow(hWnd: HWND): BOOL;
const
 SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
 SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
var
 OsVerInfo: TOSVersionInfo;
 Win32MajorVersion: Integer;
 Win32MinorVersion: Integer;
 Win32Platform: Integer;
 ForegroundThreadID: DWORD;
 ThisThreadID: DWORD;
 Timeout: DWORD;
begin
 OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
 GetVersionEx(osVerInfo);
 Win32MajorVersion := OsVerInfo.dwMajorVersion;
 Win32MinorVersion := OsVerInfo.dwMinorVersion;
 Win32Platform := OsVerInfo.dwPlatformId;
 if IsIconic(hWnd) then ShowWindow(hWnd, SW_RESTORE);
 if GetForegroundWindow = hWnd then Result := True
 else
 begin
   if ((Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4)) or
      ((Win32Platform = VER_PLATFORM_WIN32_WINDOWS) and ((Win32MajorVersion > 4) or
      ((Win32MajorVersion = 4) and (Win32MinorVersion > 0)))) then
   begin
     Result := False;
     ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow, nil);
     ThisThreadID := GetWindowThreadPRocessId(hWnd, nil);
     if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then
     begin
       BringWindowToTop(hWnd);
       SetForegroundWindow(hWnd);
       AttachThreadInput(ThisThreadID, ForegroundThreadID, False);
       Result := (GetForegroundWindow = hWnd);
     end;
     if not Result then
     begin
       SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @Timeout, 0);
       SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, nil, SPIF_SENDCHANGE);
       BringWindowToTop(hWnd);
       SetForegroundWindow(hWnd);
       SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, @Timeout, SPIF_SENDCHANGE);
     end;
   end
   else
   begin
     BringWindowToTop(hWnd);
     SetForegroundWindow(hWnd);
   end;
   Result := (GetForegroundWindow = hWnd);
 end;
end;


 
TStas   (2010-07-14 23:35) [4]

Спасибо. Вот именно то, что нужно, ибо срабатывает и при свёрнутом окне, чего у меня никак не иполучалось, в т. ч. с использованием сооветов из книжки.


 
Anatoly Podgoretsky ©   (2010-07-15 09:48) [5]

> clickmaker  (14.10.2009 09:55:02)  [2]

Не для того его сворачивали.


 
TStas   (2010-07-15 13:25) [6]

Да сворачиваю его я же сам, чтобы не мешалось. Спасибо ещё раз.



Страницы: 1 вся ветка

Текущий архив: 2016.07.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
15-1441315802
Юрий
2015-09-04 00:30
2016.07.24
С днем рождения ! 4 сентября 2015 пятница


2-1416468559
Endy
2014-11-20 10:29
2016.07.24
Подскажите литературу, WinAPI, интерфейсы (interfaces)


15-1444580103
DayGaykin
2015-10-11 19:15
2016.07.24
Удивительный QuickSort


15-1441852590
MonoLife
2015-09-10 05:36
2016.07.24
И почту Yahoo заблокировали


15-1438276951
Pavelnk
2015-07-30 20:22
2016.07.24
Что там с W10?