本人想做一个自动登录小工具,在某一时间到来时自动登录考勤。
我们公司的登录系统的流程是这样的:
1 打开指定网页,输入用户名和密码,点击确定按钮,接着进入另一界面。
2 选择考勤登陆,接着进入另一界面。
3 单击确定登陆考勤完成。
  本人做到的是,到某一时间到来时自动打开考勤登陆网页,接下来自动输入密码用户名点击确定(这一系列动作都是通过调用windowsAPI的鼠标和键盘时间函数完成,但是这样存在一个问题当分辨率改变是鼠标的定位就会错位。
  解决这一问题的方法是:直接给服务器法数据,但问题是如何给发数据,发什么数据?请教各位高手上面这个问题如何解决?

解决方案 »

  1.   

    一般好象是用sniff之类的工具,分析网页向服务器发送了怎样的数据,分析清楚后就简单了。
      

  2.   

    不NB,进来探个头就走:)
    sniffer下POST的数据
      

  3.   

    直接调用WebBrowser后,直接post数据或者获得里面的用户输入框和密码框(这样就不会出错)进行操作.参考VCKBASE或者internet explorer 程序设计..我也不NB..走了..
      

  4.   

    作弊?
    if (作弊) return NULL;
      

  5.   

    TO KeSummer([IN]LPVOID YourLove [OUT]LPVOID MyLove) 
    直接调用WebBrowser后,直接post数据或者获得里面的用户输入框和密码框(这样就不会出错)进行操作.参考VCKBASE或者internet  explorer  程序设计..我也不NB..走了.. 
    --------------------------------------------------------------------------------
    其实挺NB的!!!
    劳驾这位高人能给一些例子吗或者是一些代码现在这里谢谢了!!!
      

  6.   

    The following table shows the steps you might perform in a typical HTTP client application:Your goal
      Actions 
        you take  Effects  1.
    Begin an HTTP session.
     Create a CInternetSession object.
     Initializes WinInet and connects to server.2. 
    Connect to an HTTP server.
     Use CInternetSession::GetHttpConnection.
     Returns a CHttpConnection object.3. 
    Open an HTTP request.
     Use CHttpConnection::OpenRequest.
     Returns a CHttpFile object.
    4. 
    Send an HTTP request.
     Use CHttpFile::AddRequestHeaders and CHttpFile::SendRequest.
     Finds the file. Returns FALSE if the file is not found.
     
    5.
    Read from the file.
     Use CHttpFile.
     Reads the specified number of bytes using a buffer you supply.6. 
    Handle exceptions.
     Use the CInternetException class.
     Handles all common Internet exception types.7.
    End the HTTP session.
     Dispose of the CInternetSession object.
     Automatically cleans up open file handles and connections.
     
      

  7.   

    就这破问题还起敢起那个题目,真够丢人的
    用按键精灵很NB吗?直接sendrecv服务器80就ok了
    你要是有大脑就别说有个http头之类的话
      

  8.   

    问题让我失望
    改为nb的别进会好些
    不过是个ie自动化,需要取这种名字
      

  9.   

    http://www.vckbase.com/document/viewdoc/?id=621
    http://www.vckbase.com/document/viewdoc/?id=1486
    WebBrowser的Navigate就可以发送HTTP请求头.因为LZ是用IE登陆的,采用控制Internet Explorer最合适不过了..
      

  10.   

    http://www.vckbase.com/document/viewdoc/?id=621
    http://www.vckbase.com/document/viewdoc/?id=1486
    WebBrowser的Navigate就可以发送HTTP请求头.因为LZ是用IE登陆的,采用控制Internet Explorer最合适不过了..
    -----------------------------------------------------------------
    首先谢谢你了,我们公司不让上其他的网站,所以你给的上面的两个网址我去补了,本人是写c++方面的东西对网络一窍不通,希望你能多支点一二,就此谢过!怎样去控制Internet Explorer这个有点不明白?
      

  11.   

    直接把你正常登录的数据SNIFFER一下,然后数据照发过去.
    ---不NB,也走了
      

  12.   

    To breakind(冰舞) 
    直接把你正常登录的数据SNIFFER一下,然后数据照发过去.
    ---不NB,也走了
    ------------------------------------------------------
    先谢谢了!!!
    怎样SNIFFER一下???
      

  13.   

    SNIFFER是嗅探器,工具网上下一个。抓包分析。
      

  14.   

    首先查看html源碼看需要post那些數據.设置m_strRequest请求字符串 eg."name=aaa&pass=bbb";
    m_strServerName 服务器名称或者IP eg."www.yahoo.com"
    m_strObjectName 请求文件位置 eg. "pub/aaa.asp"
    请求的结果存放在m_strHtml中
    func(){
    CInternetSession m_InetSession("session");
    CHttpConnection* pServer = NULL;
    CHttpFile* pFile = NULL;
    try{
    INTERNET_PORT nPort;
    nPort=80;
    pServer = m_InetSession.GetHttpConnection(m_strServerName, nPort);
    pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST,
    m_strObjectName);
    char szHeaders[100];
    strcpy(szHeaders,"Accept: text*/*\r\nContent-Type: application/x-www-form-urlencoded");
    pFile->AddRequestHeaders(szHeaders);
    pFile->SendRequestEx(m_strRequest.GetLength());
    pFile->WriteString(m_strRequest); //重要-->m_Request 中有"name=aaa&name2=BBB&..."
    pFile->EndRequest();
    DWORD dwRet;
    pFile->QueryInfoStatusCode(dwRet);
    CString str;m_Mutex.Lock();
    m_strHtml="";
    char szBuff[1024];
    if (dwRet == HTTP_STATUS_OK){
    UINT nRead;
    while ((nRead = pFile->Read(szBuff,1023))>0)
    {
    m_strHtml+=CString(szBuff,nRead);
    }
    }
    m_Mutex.Unlock();delete pFile;
    delete pServer;
    }
    catch (CInternetException* e){
    CString s;
    s.Format("Internet Exception\r\nm_dwError%u,m_dwContextError%u",e->m_dwError,e->m_dwContext);
    AfxMessageBox(s);
    //catch errors from WinInet
    }
    }