我想设计这样的方案.在另一个程序里的一个text文本框中如果输入某特定的数字(如123),则在我做的程序中记录并且擦掉这输入的数字.就是不允许输入一系特定数字,问题是其他控件(如表格框中有可能输入123456),则发生误判.所以,我想先判断是不是那个文本框.再判断是不是输入3位数字.再判断是不是123.
问题2:如果能有什么办法监测到文本框输入数字后的回车,我在判断是不是特定数字,这样也应该可以避免其他数字输入不进去了(比如12345就输入不进去,因为我输入123时候就把123删除了)如果能判断回车就好了,哪个高手嫩解答,谢谢!

解决方案 »

  1.   

    枚举.
    http://community.csdn.net/Expert/topic/3637/3637199.xml?temp=.617367
      

  2.   

    Public Sub Post()    hwnd = GetForegroundWindow()   '获得活动窗体的句柄
        If hwnd = Form1.hwnd Or hwnd = 0 Then Exit Sub   '如果是自己则退出
        mlngThrdID = GetCurrentThreadId()             '获得当前窗体的线程ID
        lngThrdID = GetWindowThreadProcessId(hwnd, vbNull)   '获得活动窗体的线程ID
        n = AttachThreadInput(lngThrdID, mlngThrdID, True)   '附加线程
        mlngHwnd = GetFocus                                  '获得光标所在的窗体句柄    If mlngHwnd <> 0 Then
                TXT = GetText(mlngHwnd)这里最好用监测类名再加个判断(问题1)或者判断回车(问题2)
                If IsNumeric(TXT) = True And Len(TXT) = 6 And (Mid(TXT, 1, 1) = 1 Or Mid(TXT, 1, 1) = 3) Then
                    Gysbm = TXT
                    If Gysbm <> "" Then
                        If Gysbm <> lastBm Then
                            lastBm = Gysbm
                            If ..........Then
                                SetForegroundWindow mlngHwnd
                                chkJc
                            End If
                        End If
                    End If
                Else
                    Gysbm = ""
                End If
            '    If TXT = "经销" Then
            '        SendMessage mlngHwnd, WM_SETTEXT, 0, ByVal "代销" '改变combo1的值
            '    End If
        Else
           TXT = ""
        End If
        n = AttachThreadInput(lngThrdID, mlngThrdID, False)         '取消附加线程
    End Sub
      

  3.   

    怎样获取另一个程序当前窗体(text框)的类名?
    ==========================
    使用api:getclassname