我想让当前窗口在处理过程中不失去焦点,应该怎么做呢?
谢谢
分不多,只有100分。

解决方案 »

  1.   

    模式窗体
    form2.Show vbModal
      

  2.   

    用一timer
    不停的bringwindowtotop
      

  3.   

    模式窗体 from1.show 1,me
      

  4.   

    在下面下
    Private Sub Form_LostFocus()End Sub
    然后使用bringwindowtotop
     或者其他的使某个窗体获得焦点的API 我帮你查查啊
      

  5.   

    我是这么实现的,加了一个hook,如果是接收到wm_activate消息,把当前窗口置为活动窗口.
    可是问题本程序运行没问题,可是其它程序,如explorer,taskmgr等运行不正常了........
      

  6.   

    private sub form_gotfocus()   
        form1.setfocus
    end sub'在失去焦点事件中让form1再获得焦点,这样他就永远都拥有焦点了,但其它的任何都不在可用
      

  7.   

    你这个方法没有效果.
    Private Sub Form_GotFocus()
        Me.SetFocus
    End SubPrivate Sub Form_LostFocus()
        Me.SetFocus
    End Sub
      

  8.   

    setwindowpos
    form1.show 1
      

  9.   

    是呀,不失去焦点,有点可怕!
    我理解的表现形式:自己程序活动时,系统应处于死机状态,不响应任何操作。理论上只有独占系统资源才行(DirectX程序有点象,但在NT内核中也会被最小化的)。这可能需与Windows内核,斗斗法,看谁能抢过谁。当然自已编个操作系统应该也能解决。^_^
      

  10.   

    我贴一贴我的代码吧,这段代码倒是能成功不失去焦点,不过却也会使其它程序出错:-((((((((((
    model1:
    Public Function CallKeyHookProc(ByVal code As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
           Dim lKey   As Long
           Dim strKeyName   As String * 255
           Dim strLen   As Long
           
    '       If code = HC_ACTION Then
    '           CopyMemory keyMsg, lParam, LenB(keyMsg)
    '           Select Case wParam
    '               Case WM_SYSKEYDOWN, WM_KEYDOWN, WM_SYSKEYUP, WM_KEYUP, WM_MOUSEACTIVATE, WM_MOUSEFIRST, _
    '                WM_MOUSEHOVER, WM_MOUSELEAVE, WM_MOUSELAST, WM_MOUSEMOVE, WM_MOUSEWHEEL:
    '
    '                             CallKeyHookProc = 1                  '屏蔽按键
    '
    '             End Select
    '       End If
            If code = HC_ACTION Then
                If wParam = WM_ACTIVATE Then
                    lKey = GetActiveWindow()
                    SetActiveWindow (lKey)
                    CallKeyHookProc = 1
                End If
            End If
            If code <> 0 Then
               CallKeyHookProc = CallNextHookEx(0, code, wParam, lParam)
            End If
    End Functionform1:
    '安装钩子
    Public Sub AddHook()
        lHook(0) = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf CallKeyHookProc, App.hInstance, 0)
        lHook(1) = SetWindowsHookEx(WH_CALLWNDPROCRET, AddressOf CallKeyHookProcAfter, App.hInstance, 0)
       '键盘钩子
    '   lHook(0) = SetWindowsHookEx(WH_KEYBOARD_LL, AddressOf CallKeyHookProc, App.hInstance, 0)
    '   lHook(1) = SetWindowsHookEx(WH_MOUSE_LL, AddressOf CallKeyHookProc, App.hInstance, 0)
    End Sub
    '卸钩子
    Public Sub DelHook()
       UnhookWindowsHookEx lHook(0)
       UnhookWindowsHookEx lHook(1)
    End Sub
    Private Sub Command1_Click()
       Call AddHook
       Sleep (15000)
       Call DelHook
    End Sub
      

  11.   

    我已经做到了..............
    其实上边的代码没有问题,只不过需要编译成一个DLL,而不是EXE就可以了.
    谢谢谢谢大家.