一个vb程序,只有一个form 运行程序的时候,可以当form获得了焦点,当再去运行其他程序的时候,例如说,打开一个文本。会触发什么样的事件,或者怎样才能使这个事件被触发。form的lostfocus怎样才能被触发。
我的目的是为了在form失去焦点的时候,form中文本框的内容负值给剪切版.......
我应该怎么做呀..........先谢过各位大虾

解决方案 »

  1.   

    form1中
    Private Sub Form_Deactivate()
    Clipboard.Clear
    Clipboard.SetText Text1.Text
    End SubPrivate Sub Command1_Click()
    Form2.Show
    End Subform2中
    Private Sub Command2_Click()
    Text1.Text = Clipboard.GetText
    End Sub
      

  2.   

    当在两个进程之间切换的时候(也就是切换到不是本项目的程序上),form的lostfocus事件是不会被触发的,它只有在本项目的窗体之间切换时才触发。要完成你的功能应该要用到API了,具体怎么实现我也不知道,等等别的高手回答吧,或是自己去查查。
      

  3.   

    我是说只有一个form,form失去焦点,也就是,当前程序失去焦点,再去运行别的程序的时候,想把form里的文本框的内容负值给剪切版
      

  4.   

    unload,load 事件在其中写入代码不行吗?
      

  5.   

    程序继续运行,但只是form失去焦点
      

  6.   

    不管是什么,比如说打开多个网页的时候,当前只能将焦点停留在一个网页上,打开其他程序也一样,我想知道,当焦点从我的vb程序失去的时候,将其form窗口的文本框的内容负值给剪切版
      

  7.   

    Private Declare Function GetActiveWindow Lib "user32" () As Long
    Private Sub Timer1_Timer()
    If Me.hWnd <> GetActiveWindow Then
    Clipboard.Clear
    Clipboard.SetText Text1.Text
    End If
    End Sub
    如果不是活动窗口,把值付给剪贴版
      

  8.   

    那個必須用api了,單用事是無法解決的
      

  9.   

    模块里的代码:
    Option Explicit
    '`定义相关的  API  函数
    Public OldWindowProc   As Long
    Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Public Const GWL_WNDPROC = (-4)
    Public Const WM_ACTIVATE = &H6
    Public Const WA_ACTIVE = 1
    Public Const WA_CLICKACTIVE = 2
    Public Const WA_INACTIVE = 0
     
    Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long                     '注意不要在这里面运行类似  Form1Show  或  End  等等破坏性的操作
           If msg = WM_ACTIVATE Then
                   If (wParam = WA_ACTIVE Or wParam = WA_CLICKACTIVE) Then
                           Form1.Caption = "活动窗口"    '窗口得到焦点时
    '                       Clipboard.Clear
    '                       Clipboard.SetText Form1.Text1.Text               Else
                           Form1.Caption = "非活动窗口"   '   `窗口失去焦点时
                           Clipboard.Clear
                           Clipboard.SetText Form1.Text1.Text
                   End If
           End If
       NewWindowProc = CallWindowProc(OldWindowProc, hwnd, msg, wParam, lParam)
    End Function
    窗体里的代码:(包含一个TEXT1)Option ExplicitPrivate Sub Form_Load()
       OldWindowProc = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf NewWindowProc)       '`设置相关的窗口信息
    End Sub
      

  10.   

    Private Sub Form_LostFocus()
       
    End Sub
    用这个事件不行吗?