Форум: "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.005 c