这个程序要在程序中控制另一个对话框。现在想想另一个对话框发送一个消息,消息内容是假设按下了enter键,但是我不知道这个enter键的虚拟码&HD应该怎么加到这个sendmessage里面,WM_CLOSE可以,但是WM_CHAR需要一个按键的参数阿,请大家救命Private Sub Command2_Click()
         Dim lpClassName As String
         Dim lpCaption As String
         Dim Handle As Long         Const NILL = 0&
         Const WM_SYSCOMMAND = &H112
         Const SC_CLOSE = &HF060&
         Const BM_CLICK = &HD&
 lpClassName = "#32770"
         lpCaption = "NetMeeting - 没有进行呼叫"
        lpCaption = "关于 Windows NetMeeting"
        lpClassName = "Button"
       lpCaption = "浏览(&R)..."
 Determine the handle to the Calculator window.
         Handle = FindWindow(lpClassName$, lpCaption$)
        Handle = SendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, NILL)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      End Sub

解决方案 »

  1.   

    我是向对话矿窗体发送消息,不是向按钮发送消息。所以需要发送键消息。
    再问一下,是WM_CHAR还是WM_KEYDOWN
      

  2.   

    sendmessage hwnd, WM_CHAR, key_ascii, 0
      

  3.   

    老大,看看我的函数
    Handle = SendMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, NILL)
    我还需要一个WM_SYSCOMMAND的位置呀,这个去掉了还能行吗?
      

  4.   

    改成Private Sub Command2_Click()
             Dim lpClassName As String
             Dim lpCaption As String
             Dim Handle As Long         Const NILL = 0&
             Const WM_SYSCOMMAND = &H112
             Const SC_CLOSE = &HF060&
             Const VK_RETURN = &HD&
             Const WM_CHAR = &H102
             lpClassName = "#32770"
             lpCaption = "关于 Windows NetMeeting"
                     Handle = FindWindow(lpClassName$, lpCaption$)        Handle = SendMessage(Handle, WM_CHAR, VK_RETURN, NILL)
          End Sub以后不行阿,没有效果
    急,请大家帮忙!
      

  5.   

    发送回车可以直接
    sendmessage hwnd, WM_CHAR, 10, 0关闭程序参考
    Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
    Private Const PROCESS_TERMINATE = &H1''用于结束外部进程,hCloseWnd 是要结束的程序的主窗口的 HWND
    Public Function TernamiteProcessByHWND(ByVal hCloseWnd As Long) As Boolean
    Dim hProcessID  As Long
    Dim hProcess    As Long
    On Error GoTo PROC_EXIT
        If hCloseWnd = 0 Then GoTo PROC_EXIT
        If GetWindowThreadProcessId(hCloseWnd, hProcessID) = 0 Then GoTo PROC_EXIT
        hProcess = OpenProcess(PROCESS_TERMINATE, False, hProcessID)
        If hProcess = 0 Then GoTo PROC_EXIT
        If TerminateProcess(hProcess, 0&) = 0 Then GoTo PROC_EXIT
        TernamiteProcessByHWND = True
    PROC_EXIT:
        If Err.Number <> 0 Then
            Debug.Print Err.Description
            Err.Clear
        End If
    End Function