QQ帐号和密码都有了,如何用程序让QQ自动登陆?

解决方案 »

  1.   

    1、用SHELL命令启动QQ;
    2、用findwindow找到QQ的登陆窗口;
    3、用getwindowrect获取登陆窗口的坐标;
    4、用用mouse_event\keybd_event模拟你的点鼠标/敲键盘的动作即可;
    至于如何设置mouse_event\keybd_event参数中的X、Y坐标,就利用3中获取的主窗口左上角的X、Y,再加上用户名和密码框距离窗口左上角的距离(这个具体一般是不会变化的)即可后的;
      

  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
    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 Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Private Const WM_SETTEXT = &HC
    Private Const BM_CLICK = &HF5
    Dim filessPrivate Sub Command1_Click()
    ShellExecute Me.hwnd, "open", filess, 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
      

  3.   

    也可以考虑用WH_JOURNALRECORD和WH_JOURNALPLAYBACK钩子重放鼠标键盘操作,这个我已经实验过了,可行的,具体参考:http://www.applevb.com/art/playbackhook.txthttp://cnprogram.diy.myrice.com/article/delphi/delphi525.html
      

  4.   

    用SendMessage似乎无效啊?
    曾经试过mouse_event\keybd_event,登陆失败(可能我做错了?)呵呵,找结果!
      

  5.   

    用keydb_event比较好。QQ的消息处理过了的,不能直接sendmessage