L>
L>var
L>hFirewall : HWND;
L>hForeGRND : HWND;
L>hForeGRND1 : HWND;
L>procedure TForm1.Button1Click(Sender: TObject);
L>begin
L>if hFirewall:=FindWindow(nil, 'MyScreamingFirewall') <> 0 then
L>Timer1.Enabled:=True else MessageBox(0,'Нету такова акна','Ашыпка',$10); //гы-гы... :)
L>end;
L>// Timer.Interval:=10 - поэксперементируй с интервалом
L>procedure TForm1.Timer1OnTimer(Sender: TObject);
L>begin
L>hForeGRND:=GetForegroundWindow;
L>if hForeGRND = hFirewall then
L> begin
L> SetForegroundWindow(hForeGRND1);
L> Exit;
L> end;
L>hForeGRND1:=hForeGRND;
L>end;
L>
L>сам не пробовал...ну наверное сработает....хотя не исключено, что моргание все-таки будет....
L>да и хендл окна смениться наверное может....конечно нужно тогда по ProcessId...
L>тогда используй после FindWindow — GetWindowThreadProcessId...
Не подходит, т. к. нужно чтоб фокус вообще не смещался. Ибо в данном случке такая ерунда: сижу в одном приложении, другое решает выдвинуться топмост и перехватить фокус, чего нельзя позволять.