最近做一个项目,实现查询和打印功能,当用户需要打印时我会创建一另个进程来进行监控并弹出MessageBox,用户按下确定后该监控进程就结束掉,但有时用户在该弹出的MessageBox上按下确定键后我的程序会丢掉焦点,无法接受输入,于是我用一个定时器来定期检查,如下:
procedure Tfrm_Main.Timer3Timer(Sender: TObject);
var
H:HWnd;
begin
  H:=FindWindow(nil,PChar('HF_Main'));
  Application.BringToFront;
  SetForegroundWindow(H);
  ShowWindow(H,SW_SHOWNORMAL);
  SetActiveWindow(H);
end;
但好象第一次能运行成功,以后程序图标只在任务栏闪烁,主窗口中有光标闪烁,
但不能接受输入,此时焦点还在别的程序上。该如何解决这个问题呢?
另一个问题是,如何获得当前屏幕上激活的有焦点的窗口?(我试过了GetActiveWindow(),GetTopWindow(),GetWindow(),好象都不行)
请高手指点,万分感谢!!!