Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
15-1445780305
Кто б сомневался
2015-10-25 16:38
2016.07.24
Посоветуйте какие то интересные сайты, типа хабра


2-1416681305
Max
2014-11-22 21:35
2016.07.24
Как в ListView закрасить текст строки другим цветом WinApi?


2-1414862984
Fox
2014-11-01 20:29
2016.07.24
Вращение карты


2-1414689143
Signal
2014-10-30 21:12
2016.07.24
Другое приложение и контекстное меню


15-1445594070
ksergey
2015-10-23 12:54
2016.07.24
Организация API для сторонних приложений: какие технологии?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский