用shellexecute 好像没办法带post数据。我想在界面上增加一个hyperlink,但只能已get方式带参数。请问有办法用post方式打开一个ie访问吗?

解决方案 »

  1.   


    #include "afxinet.h"bool PostData(LPCTSTR host, LPCTSTR object, LPCTSTR postdata, LPCTSTR refererlink, int port)
    {
     CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded");
     strHeaders += "\r\nAccept-Language:zh-cn";
     if(refererlink)
     {
      strHeaders += "\r\nReferer:";
      strHeaders += refererlink;
     }
     CString strFormData = _T(postdata); CInternetSession session;
     CHttpConnection* pConnection = session.GetHttpConnection(_T(host));
     if(pConnection == NULL) return false;
     CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T(object));
     if(pFile == NULL) return false; BOOL result = pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
     if(result == FALSE) return false; DWORD dwRet;
     pFile->QueryInfoStatusCode(dwRet); CString m_strHtml="";
     char szBuff[1024];
     UINT nRead;
     while ((nRead = pFile->Read(szBuff,1023))>0)
     {
      m_strHtml+=CString(szBuff,nRead);
     }
     FILE *fp = fopen("C:\\11.html", "w");
     fwrite(m_strHtml, 1, m_strHtml.GetLength(), fp);
     fclose(fp); if (dwRet == HTTP_STATUS_OK)
     {
      return true;
     }
     return false;
    }
      

  2.   


    CString   szContent;   
      CAsyncSocket*   pClient   =   new   CAsyncSocket;   
      char   *szContent   =   "POST   /sms/sms.asp?txt=12345789"   
      n   =   pClient->Create();   
      n   =   pClient->Connect("www.csdn.net",   80);   
      Sleep(2000);   
      n   =   pClient->Send(szContent,   strlen(*szContent));   
      do   
      {   
      Sleep(40);   
      if   (i++   >   50)   break;   
      n   =   pClient->Receive(rbuf,   sizeof(rbuf));   
      }   while   (n   <=   0);   
      pClient->Close();   
      delete   pClient;这个貌似也行的
      

  3.   

    弹出一个IE还不简单,ShellExec下得了
      

  4.   

    如果你想弹出一个IE,然后post,恕我无能为力
      

  5.   

    有办法的!
    自己写一个mini web server,
    通过shellexecute来重定向(以POST 方式,theForm.submit)到真实的web server
      

  6.   

    你用 ShellExecute 带参数以 Get 的方式打开不行么?非要用 Post ?
    数据有多长?这样既能打开 IE ,又能按你要求提交数据。