原贴:
http://community.csdn.net/Expert/topic/4446/4446492.xml?temp=.2299921首先感谢大侠回复,不过好像没完全解决,还是有点问题:OWNER变为Enabled是可以了,并且可以拖动该窗体,不过OWNER上的控件好像还是不能相应,比如
按钮等等。
如下是我的测试代码,在Form1中加了个Timer控件,仅仅用来弹出模态窗体后,调用ShowModalWindow来使OWNER变为Enable,弹出模态窗体并将OWNER变为可用后,将计时器Diabled
但是这时Form1上的Command2是不能相应,添加其他控件试了一下,也都不能相应,这该怎么办?——————————————————————————————————
Option ExplicitPrivate Const GW_OWNER = 4
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Declare Function EnableWindow Lib "user32" (ByVal hwnd As Long, ByVal fEnable As Long) As Long
Dim f2 As Form2Private Sub ShowModalWindow(ByVal hwnd As Long, ByVal flag As Boolean)
    Dim Owner_Hwnd As Long
    Owner_Hwnd = GetWindow(hwnd, GW_OWNER)
    If GW_OWNER <> 0 Then
        EnableWindow Owner_Hwnd, flag
    End If
End SubPrivate Sub Command1_Click()
    Timer1.Enabled = True
    Timer1.Interval = 1000
    Set f2 = New Form2
    f2.Show vbModal
End SubPrivate Sub Command2_Click()
    MsgBox "Command 2"
End SubPrivate Sub Timer1_Timer()
    Timer1.Enabled = False
    ShowModalWindow f2.hwnd, True
End Sub

解决方案 »

  1.   

    这个是vb程序做了特殊处理所致,换成其它的程序应该不会有这个问题,你要处理的是vb程序吗?是的话,跟贴
      

  2.   

    只用vb的话,恐怕没什么好办法(需要用全局消息钩子,如果不是跨进程的话,那就容易多了),你可以参考一下这个:
    http://discuss.fogcreek.com/joelonsoftware3/default.asp?cmd=show&ixPost=104273你还是说明一下你的需求吧,越详细越好