请教!

解决方案 »

  1.   

    GetParent VB声明 
    Declare Function GetParent Lib "user32" Alias "GetParent" (ByVal hwnd As Long) As Long 
    说明 
    判断指定窗口的父窗口 
    返回值 
    Long,父窗口的句柄。如窗口没有父,或遇到错误,则返回零。会设置GetLastError 
    参数表 
    参数 类型及说明 
    hwnd Long,欲测试的窗口的句柄
      

  2.   

    谢谢大侠的指点!!!但我还不是很明白,请教:我用shell打开QQ,只能得到一个进程ID,也就是PID,但是用GetParent是在知道一个窗口的句柄时,可以找到它的父窗口的句柄.问题是,我现在只有打开QQ时的PID啊,怎么才能得到QQ最外面那个框框图的句柄呢?请教!
      

  3.   

    1。GetForegroundWindow(shell的时候指定vbNormalFocus)
    2.findwindow
    3.EnumWindows(比较pid从而找到hwnd)
    不过上面的方法都各有缺点,不太完美凑合着用吧。。
      

  4.   

    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 Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongOption Explicit
    Private Const WM_SETTEXT = &HC
    Private Const BM_CLICK = &HF5Private Sub Command1_Click()
    ShellExecute Me.hwnd, "open", "D:\Tencent\QQ\QQ.exe", vbNullString, vbNullString, vbNormalFocus
    Dim QQHwnd As Long, QHwnd As Long, PHwnd As Long, RHwnd As Long
    Do While RHwnd = 0
    QQHwnd = FindWindow("#32770", vbNullString)
    QHwnd = FindWindowEx(QQHwnd, 0, "ComboBox", vbNullString)
    PHwnd = FindWindowEx(QQHwnd, 0, "Edit", vbNullString)
    RHwnd = FindWindowEx(QQHwnd, 0, "Button", "登录")
    DoEvents
    Loop
    SendMessage QHwnd, WM_SETTEXT, 0, ByVal Text1.Text  'text1内为QQ号码.
    SendMessage PHwnd, WM_SETTEXT, 0, ByVal Text2.Text  'Text2内为密码.
    SendMessage RHwnd, BM_CLICK, 0, 0 '点击登录按钮
    End
    End Sub
      

  5.   

    为什么我的QHwnd ,PHwnd 和 都是0呢????我用的是VB测试的,用的是combobox,text,commandbutton
    会有问题马
      

  6.   

    谢谢online(龙卷风V3.0--笑傲江湖)大侠的代码!!!!
    但是我试验时,这一句不起作用:
    SendMessage PHwnd, WM_SETTEXT, 0, ByVal Text2.Text  'Text2内为密码.但是改成下面的代码时:
     SendKeys "123456"(密码)
    就可以.不知为什么?请教!
      

  7.   

    那个密码框吃“WM_SETTEXT”AND“WM_GETTEXT”
      

  8.   

    http://basic.nease.net/MyExe/EnumWnd.zip
    Down下来看看吧。