Re[2]: Подавить выдвигание окна на передний план и передачу
От: Аноним  
Дата: 30.03.04 17:12
Оценка:
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...

Не подходит, т. к. нужно чтоб фокус вообще не смещался. Ибо в данном случке такая ерунда: сижу в одном приложении, другое решает выдвинуться топмост и перехватить фокус, чего нельзя позволять.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.