请大家帮忙.

解决方案 »

  1.   

    如果是窗体的话,窗体名.控件名.text=........就可以了。
      

  2.   

    如果是其他的应用程序,你可以用API:SendMessage实现
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_SETTEXT = &HCSendMessage 需要改变值的文本框的hwnd, WM_SETTEXT, 0, ByVal 你指定的文本
      

  3.   

    例子
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPrivate Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_PASTE = &H302
    Private Const WM_SETTEXT = &HCPrivate Sub Command1_Click()
        Dim TemphWnd As Long
        
        TemphWnd = FindWindow("Notepad", vbNullString)
        TemphWnd = FindWindowEx(TemphWnd, 0, "Edit", vbNullString)
        If TemphWnd Then
            ''-- 将Text1中的文本粘贴到记事本
            'VB.Clipboard.SetText Text1.Text
            'SendMessage TemphWnd, WM_PASTE, 0, ByVal 0&
            
            '把记事本的内容设置为Text1中的文本
            SendMessage TemphWnd, WM_SETTEXT, 0, ByVal CStr(Text1.Text)
            
        End If
        
    End Sub
      

  4.   

    ' 我也现写了个例子,是改Windows自带的计算器的哪个显示数字的Text中的文本
    ' 不过我发现它好像不是一个标准的TextOption Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_SETTEXT = &HCPrivate Sub Command1_Click()
        Dim Handle As Long    ' 窗口句柄
        Dim ParentHandle As Long    ' 父窗口句柄
        Shell "calc.exe", vbNormalFocus
        ParentHandle = FindWindow("SciCalc", "计算器")   ' 获得父窗口句柄
        Handle = FindWindowEx(ParentHandle, 0&, "Edit", vbNullString)  ' 获得窗口句柄
        SendMessage Handle, WM_SETTEXT, 0, ByVal "设置另一个程序的文本框中的文本"
    End Sub
      

  5.   

    我同意楼上的说法,但是想必搂主对API不怎么了解,光有SendMessage函数是做不出什么名堂来的。如果搂主像改变某个程序窗口中的某个TextBox的值,看来就会束手无策了。
    在介绍你几个API吧:'获取鼠标指针的当前位置
    Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    '返回包含了指定点的窗口的句柄
    Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
    '为指定的窗口取得类名
    Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long'获取窗口文本字符长度
    Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" (ByVal hwnd As Long) As Long
    '获取窗口文本
    Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
    Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Public Const GW_HWNDFIRST = 0 '为一个源子窗口寻找第一个兄弟(同级)窗口,或寻找第一个顶级窗口
    Public Const GW_HWNDLAST = 1  '为一个源子窗口寻找最后一个兄弟(同级)窗口,或寻找最后一个顶级窗口
    Public Const GW_HWNDNEXT = 2  '为源窗口寻找下一个兄弟窗口
    Public Const GW_HWNDPREV = 3  '为源窗口寻找前一个兄弟窗口
    Public Const GW_OWNER = 4     '寻找窗口的所有者
    Public Const GW_CHILD = 5     '寻找源窗口的第一个子窗口
    '获取指定窗口句柄
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    lpClassName  '窗口类名
    lpWindowName  '窗口名
    有了这些API你就可以找出你想要的窗口了,加上楼上那位仁兄的SendMessage函数,就可以满足你的要求了,还有其实TextBox这些可具有焦点的对象都可以把他们看作是一个子窗口来处理的。好好运用这些函数你还可以作出很多不错的东西来呢。
      

  6.   

    Option Explicit
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Private Const WM_SETTEXT = &HC
    Private Const WM_NCLBUTTONDOWN = &HA1
    Private Const WM_NCLBUTTONUP = &HA2
    Private Const WM_KEYDOWN = &H100
    Private Const WM_KEYUP = &H101
    Private Const BM_CLICK = &HF5
    'Private Declare Function GetDlgItem Lib "user32" (ByVal hDlg As Long, ByVal nIDDlgItem As Long) As Long
    Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
    Private Sub command1_click()
        Dim Handle As Long    ' 窗口句柄
        Dim s As String
        Dim ParentHandle As Long    ' 父窗口句柄
        Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer
        Dim f As Integer, g As Integer, h As Integer, i As Integer, j As Integer
        Dim a1 As Integer, b1 As Integer, c1 As Integer, d1 As Integer, e1 As Integer
        Dim f1 As Integer, g1 As Integer, h1 As Integer, i1 As Integer, j1 As Integer
        Dim INI As String
        ParentHandle = FindWindow("FNWNS370", "系统名称")'这里可以找到一个主窗口的句柄
        Handle = FindWindowEx(ParentHandle, 0&, "PBEDIT70", vbNullString)'这里可以得到一个文本框的值
        SendMessage Handle, WM_SETTEXT, 0, ByVal "1234556"'改变文本框的值
        Handle = FindWindowEx(ParentHandle, 0&, "Button", "确定(&O)")
       'SendMessage Handle, WM_KEYDOWN, 32, &H11C0001
       'SendMessage Handle, WM_KEYUP, 32, &H11C0001 '这两句模拟回车
       SendMessage Handle, BM_CLICK, 0, 0'模拟单击
    end sub'Private Sub command1_click()
    'Dim Handle As Long    ' 窗口句柄
    'Dim s As String
    'Dim ParentHandle As Long    ' 父窗口句柄
    'ParentHandle = FindWindow("FNWNS370", "系统注册")
    'While True
    '    Handle = GetWindow(ParentHandle, 6) '得到对话框的句柄.这里是我试出来的,等于6时刚好可以取到.
    '    Handle = FindWindowEx(Handle, 0&, "Button", "确定")
    '    SendMessage Handle, BM_CLICK, 0, 0 '模拟单击,我不知道为什么要单击两下.
    '    SendMessage Handle, BM_CLICK, 0, 0
    '    DoEvents
    'Wend
    'End Sub
    我想这可能就是你想要的.你是不是在破密码或注册码什么的呢?呵呵.给分吧.我的已经实现了.
      

  7.   

    还有个消息wm_copydata,用途更广,但要做特别处理  更广泛的,在应用程序间共享数据,最好的实现方法是用 内存映射文件 。
      
      用这几个api,OpenFileMapping,MapViewOfFile,UnmapViewOfFile