form.showmodal 过程实际上建立了自己的消息循环,给所有本线程窗口派发消息。
而把调用前的ActiveWindow及其子窗口disable掉,但这只不过使它们不能获得焦点并
接受键盘输入而已,这些disable掉的窗口仍可接受其它消息.
所以就用onmousedown事件就可以,不用建立新线程:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if assigned(form2) then
if not (self.Enabled) and ( getactivewindow=form2.Handle) then
begin
//add your code here
end;
end;