Вниз
Скачать: CL | DM;

Как обойти ограничения на получения формой, фокуса ввода в K2/XP   Найти похожие ветки 

 
Федор Т   (2004-05-26 23:57) [0]

Как обойти ограничения на получения формой, фокуса ввода в 2000/ХР виндах?

Собственно по сабжу:
Известно, что для перемещения окна на передний план существует функция SetForegroundWindow из Win32 API . Она отлично работала под Windows 95 и Window NT. Но потом парни из Майкрософт провозгласили новый принцип: "Никто кроме пользователя не имеет право выдвигать окно на передний план". И хотя их собственные продукты продолжают делать это при необходимости, функция SetForegroundWindow перестала работать, как раньше. Теперь только активный процесс (foreground process) может переместить окно на передний план с использовании этой функции, а окно фонового процесса начнёт "мерцать" на панели задач, чтобы привлечь внимание пользователя.

Функции:

SwitchToThisWindow)(HWND, BOOL);
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0, &dwTimeout, 0);
procedure SwitchToThisWindow(wnd : HWND; bRestore: BOOL); stdcall;

дают аналогичный результат, что и  SetForegroundWindow


 
Cobalt ©   (2004-05-27 00:12) [1]

А SetFocus не работает?


 
Федор Т   (2004-05-27 00:33) [2]

Cobalt ©  (27.05.04 00:12) [1]
окно наверх выводит, а фокус ввода не дает.
В том то и есть ограничения 2000/ХР


 
BlackTr   (2004-05-27 09:25) [3]


function SetForegroundWindow98(const Wnd: HWND): Boolean;
var
 ForeThreadID, NewThreadID: DWORD;
begin
 if GetForegroundWindow <> Wnd then
 begin
   ForeThreadID := GetWindowThreadProcessId(GetForegroundWindow, nil);
   NewThreadID := GetWindowThreadProcessId(Wnd, nil);
   if ForeThreadID <> NewThreadID then
   begin
     AttachThreadInput(ForeThreadID, NewThreadID, True);
     Result := SetForegroundWindow(Wnd);
     AttachThreadInput(ForeThreadID, NewThreadID, False);
     if Result then
       Result := SetForegroundWindow(Wnd);
   end
   else
     Result := SetForegroundWindow(Wnd);
 end
 else
   Result := True;
end;



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.053 c
1-1087573200
killer
2004-06-18 19:40
2004.07.04
Вставлять изображение (bmp) справа строки ListBox-а


1-1087737033
*Boba
2004-06-20 17:10
2004.07.04
Edit


14-1087385368
AlexG
2004-06-16 15:29
2004.07.04
WEB-программисты...


14-1087447444
Alecs61
2004-06-17 08:44
2004.07.04
НАС ЕЩЕ НЕ ПОХОРОНИЛИ?


4-1085397065
IgorG
2004-05-24 15:11
2004.07.04
Pocket PC




   Наверх