高手看看,我很苦恼,憋我半天了!
      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
       Dim cwnd As Long, mwnd As Long
    
    Private Const WM_SETTEXT = &HC
      Private Sub Command1_Click()
        mwnd = FindWindow(vbNullString, "12345")                 '可以得到句柄值,wnd有返回值
        cwnd = FindWindowEx(mwnd, 0, vbNullString, "Text1") '得不到句柄,wnd返回为0
        ccwnd = FindWindowEx(mwnd, 0, vbNullString, "取消")
        Print mwnd
        Print cwnd
        Print ccwnd
        Dim iResult As Long
        iResult = SendMessage(cwnd, WM_SETTEXT, 1, "victory")
   End SubPrivate Sub Form_Load()
Shell ("D:\Program Files\Microsoft Visual Studio\VB98\project\b\工程1.exe")
End Sub

解决方案 »

  1.   

    iResult = SendMessage(cwnd, WM_SETTEXT, 1, "victory")
    这样写可以吗?
    另一个窗口中文本框显示的是 “,?”和“=”
    郁闷啊
      

  2.   

    今天第一次搞API函数,菜得很,希望各位指点一下
      

  3.   

    iResult = SendMessage(cwnd, WM_SETTEXT, 0&, ByVal "victory")
      

  4.   

    1、参数顺序有点问题;2、控件要用类名。
    Option ExplicitPrivate 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
    Dim Cwnd As Long, mwnd As LongPrivate Const WM_SETTEXT = &HC&
    Private Sub Command1_Click()
            Dim mwnd As Long, Cwnd As Long, CCwnd As Long
            mwnd = FindWindow(vbNullString, "Form1") '可以得到句柄值,wnd有返回值
            Cwnd = FindWindowEx(mwnd, ByVal 0&, "ThunderRT6TextBox", vbNullString)    '得不到句柄,wnd返回为0
            CCwnd = FindWindowEx(mwnd, ByVal 0&, "ThunderRT6CommandButton", vbNullString)
            Print mwnd
            Print Cwnd
            Print CCwnd
            Dim iResult As Long, cText As String
            cText = "victory"
            iResult = SendMessage(Cwnd, WM_SETTEXT, Len(cText), ByVal cText)
            cText = "显示取消没有"
            iResult = SendMessage(CCwnd, WM_SETTEXT, Len(cText), ByVal cText)
            
    End SubPrivate Sub Form_Load()
            Form2.Show
            Shell ("D:\Microsoft Visual Studio\VB98\工程1.exe"), vbNormalFocus
    End Sub
      

  5.   

    楼上这个代码在我的电脑里面测试成功。试试下面这个:Option ExplicitPrivate 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
    Dim Cwnd As Long, mwnd As LongPrivate Const WM_SETTEXT = &HC&
    Private Sub Command1_Click()
            Dim mwnd As Long, Cwnd As Long, CCwnd As Long
            mwnd = FindWindow(vbNullString, "12345") '可以得到句柄值,wnd有返回值
            Cwnd = FindWindowEx(mwnd, ByVal 0&, "ThunderRT6TextBox", vbNullString)    '得不到句柄,wnd返回为0
            CCwnd = FindWindowEx(mwnd, ByVal 0&, "ThunderRT6CommandButton", vbNullString)
            Print mwnd
            Print Cwnd
            Print CCwnd
            Dim iResult As Long, cText As String
            cText = "victory"
            iResult = SendMessage(Cwnd, WM_SETTEXT, Len(cText), ByVal cText)
            cText = "显示取消没有"
            iResult = SendMessage(CCwnd, WM_SETTEXT, Len(cText), ByVal cText)
            
    End SubPrivate Sub Form_Load()
            Form1.Show
            Shell ("D:\Microsoft Visual Studio\VB98\project\b\工程1.exe"), vbNormalFocus
    End Sub
      

  6.   

    对字符串传值UP                UP          UPUPUPUPUPUPUP 
      

  7.   

    推荐我这个新鲜出炉的:)Option ExplicitPrivate Const WM_SETTEXT = &HC
    'unicode版的哟
    Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hwnd As Long, _
        ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
        
    Private Sub MySetWindowText(ByVal hwnd As Long, ByVal Text As String)
        Dim iResult As Long
        iResult = SendMessage(hwnd, WM_SETTEXT, 0, ByVal StrPtr(Text))End Sub
    Private Sub Command1_Click()
        MySetWindowText Text1.hwnd, "vic胜利"
    End Sub