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

Вниз

Вернуть активность собственной форме   Найти похожие ветки 

 
Эли   (2004-01-02 10:42) [0]

Как вновь сделать собственное приложение активным, после того, как другое приложение стало активным?
SetForeGroundWindow(handle)почему-то не работает, если приложение обращается само к себе.


 
Эли   (2004-01-02 11:54) [1]

Неужели это так трудно? Неужели надо создавать внешний экзишник, чтобы он извне вернул окну активность? Это похоже на извращение.


 
TUser   (2004-01-02 21:35) [2]

Ловить WM_ACTIVATE, и если окно стало неактивным - вернуть ему фокус.


 
Эли   (2004-01-02 21:55) [3]

Окно стало неактивным вместе со всем приложением - без всяких если. Как его сделать активным естественным - не диким способом.
Можно, к примеру, так Application.Minimize; Application.Restore...
А если не хочется всяких прыжков. Application.Restore не помогает само по себе.
Пока ничто не помогает, но решение, наверно, есть. И, скорее всего, только в одну строку.


 
Ihor Osov'yak   (2004-01-03 13:46) [4]

try it

function ForceForegroundWindow(hwnd: THandle): boolean;
const
SPI_GETFOREGROUNDLOCKTIMEOUT = $2000;
SPI_SETFOREGROUNDLOCKTIMEOUT = $2001;
var
ForegroundThreadID: DWORD;
ThisThreadID: DWORD;
timeout: DWORD;
begin
if IsIconic(hwnd) then
ShowWindow(hwnd, SW_RESTORE);

if GetForegroundWindow = hwnd then
Result := True
else
begin
// Windows 98/2000 doesn"t want to foreground a window when some other
// window has keyboard focus
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
// Code from Karl E. Peterson, www.mvps.org/vb/sample.htm
// Converted to Delphi by Ray Lischner
// Published in The Delphi Magazine 55, page 16
Result := False;
ForegroundThreadID := GetWindowThreadProcessID(GetForegroundWindow,
nil);
ThisThreadID := GetWindowThreadPRocessId(hwnd, nil);
if AttachThreadInput(ThisThreadID, ForegroundThreadID, True) then
begin
BringWindowToTop(hwnd); // IE 5.5 related hack
SetForegroundWindow(hwnd);
AttachThreadInput(ThisThreadID, ForegroundThreadID, False);
Result := (GetForegroundWindow = hwnd);
end;

if not Result then
begin
// Code by Daniel P. Stasinski
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, @timeout, 0);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(0), SPIF_SENDCHANGE);
BringWindowToTop(hwnd); // IE 5.5 related hack
SetForegroundWindow(hWnd);
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, TObject(timeout), SPIF_SENDCHANGE);
end;
end
else
begin
BringWindowToTop(hwnd); // IE 5.5 related hack
SetForegroundWindow(hwnd);
end;

Result := (GetForegroundWindow = hwnd);
end;
end; { ForceForegroundWindow }


 
DDA   (2004-01-03 16:57) [5]

Опа , давно искал это



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

Форум: "Основная";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
4-49813
Prov
2003-11-12 00:09
2004.01.16
MessaegBoxIndirect


7-49793
Flying Home
2003-10-30 12:36
2004.01.16
---|Ветка была без названия|---


14-49682
xtz
2003-12-25 18:44
2004.01.16
День добрый мастера.Не подскажите ли где можно взять описание Dll


1-49528
Kinderr
2004-01-02 15:59
2004.01.16
Global hot key + Win button


7-49776
dream
2003-11-03 14:14
2004.01.16
Как записать данные в реестр на имя определёного пользователя





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский