프로그래밍 관련 소스코드 및 정보를 제공합니다.

6.0버전에서 POST 방식을 사용하기 위해서는 Unicode 및 몇가지 세팅 작업을 해야됩니다.

 

VC6.0 에서 Unicode 세팅방법.

 

#1. Project -> Setting -> C/C++ 에서

 

       Preprocessor definitions: 항목에서 _MBCS 를 지우고 UNICODE,_UNICODE 를 추가

 

#2. libcmtd.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16

 

       위 링크에러 발생시 프로젝트 세팅 링크탭에서  

       /entry:"wWinMainCRTStartup" 옵션을 추가

 

#3. mfc42u.lib 오류가 발생하면 첨부파일을 다운받아서 압축을 풀어서 아래 경로에 복사합니다.

     ( C:\Program Files\Microsoft Visual Studio\VC98\Lib )

 

//====================================================================================

 

HRESULT hr;
IWebBrowserApp* pWBApp = NULL;
BSTR bstrURL = NULL, bstrHeaders = NULL;
VARIANT vFlags = {0}, vTargetFrameName = {0}, vPostData = {0}, vHeaders = {0};

CString strPostData = _T( "id=test&pw=1234" ); // POST로 전달 할 파라메타

 

CoInitialize( NULL );

if( FAILED( hr = CoInitialize(NULL) ) )
{
    return;
}

 

if( FAILED( hr = CoCreateInstance( CLSID_InternetExplorer, NULL, CLSCTX_SERVER, IID_IWebBrowserApp(LPVOID*)&pWBApp) ) )
{
    return;
}

 

bstrURL = SysAllocString(  _T("http://www.test.com/login.php") ); // 로그인 할 URL 주소

 

if( !bstrURL )
{
    return;
}

   

bstrHeaders = SysAllocString(  _T("Content-Type: application/x-www-form-urlencoded")  );

  

if( !bstrHeaders )
{
    return;
}

 

 vHeaders.vt = VT_BSTR;
 vHeaders.bstrVal = bstrHeaders;

 SAFEARRAY FAR *sfPost = NULL;
 SAFEARRAYBOUND bound;
 bound.cElements = strPostData.GetLength();
 bound.lLbound = 0;
 sfPost = SafeArrayCreate( VT_UI1, 1, &bound );

 

for( long idx = 0; idx < (signed)bound.cElements; idx++ )
{
    SafeArrayPutElement( sfPost, &idx, strPostData.GetBuffer(bound.cElements) + idx );
}

strPostData.ReleaseBuffer();

VARIANT vaPost;
vaPost.vt = VT_ARRAY;
vaPost.parray = sfPost;

hr = pWBApp->Navigate( bstrURL, &vFlags, &vTargetFrameName, &vaPost, &vHeaders );
//pWBApp->put_Visible( VARIANT_TRUE ); // IE새창 띄우기

SafeArrayDestroy( sfPost );

 

Sleep( 1000 );

 

IDispatch* pHtmlDispatch = NULL;
IHTMLDocument2* pHtmlDoc = NULL;
IHTMLElement* pBody = NULL;

  

pWBApp->get_Document( &pHtmlDispatch );
pHtmlDispatch->QueryInterface( IID_IHTMLDocument2, (LPVOID*)&pHtmlDoc );
pHtmlDoc->get_body( &pBody );

   

BSTR bstrBody;
pBody->get_outerHTML( &bstrBody );

 

CString strBody;
strBody.Format( _T("%s"), bstrBody );
AfxMessageBox( strBody );

 

SysFreeString( vHeaders.bstrVal );
SysFreeString( vTargetFrameName.bstrVal );
pWBApp->Release();
pHtmlDispatch->Release();
pHtmlDoc->Release();
pBody->Release();
CoUninitialize();

문서 첨부 제한 : 0Byte/ 2.00MB
파일 제한 크기 : 2.00MB (허용 확장자 : *.*)
List of Articles
번호 제목 글쓴이 날짜 조회
181 [해결법] error C2065: 'strcpy_instead_use_StringCbCopyA_or_StringCchCopyA' : undeclared identifier [레벨:6]운영자 2010/08/30 453
» POST 방식으로 웹에 데이터 전송 후 페이지 내용 얻기(VC6.0버전) file [레벨:6]운영자 2010/07/28 921
179 POST 방식으로 데이터 전송 [레벨:6]운영자 2010/07/28 1022
178 CString → BSTR 변환 [레벨:6]운영자 2010/07/26 1094
177 POST 방식으로 쿼리(DATA) 전송 [레벨:6]운영자 2010/07/26 1049
176 uuid.lib(ocidl_i.obj) : fatal error LNK1103: debugging information corrupt; recompile module 해결책 [레벨:6]운영자 2010/07/26 1089
175 바탕화면 경로얻기 [레벨:6]운영자 2010/07/20 1379
174 URL Encode / Decode [레벨:6]운영자 2010/07/05 1684
173 단축키 적용( Ctrl + S ) 적용시 [레벨:6]운영자 2010/06/14 2081
172 폴더존재 유무 확인방법 [레벨:6]운영자 2010/05/05 3197