Вниз
Скачать: 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.026 c
1-1087480688
olhovik
2004-06-17 17:58
2004.07.04
Вывод из Table в Memo


11-1076241489
mmn
2004-02-08 14:58
2004.07.04
Зависание при изменении TabOrder в TKOLMemo


3-1086792518
alex_pv
2004-06-09 18:48
2004.07.04
Помогите с документацией


8-1079626237
kalista
2004-03-18 19:10
2004.07.04
MediaPlayer


1-1087739472
Islander
2004-06-20 17:51
2004.07.04
Как проверить, раскрыто ли PopupMenu или нет?




   Наверх