void CGoLoginDlg::StartIE(CString strUrl, CString strData)
{
IWebBrowser2 *pWebBrowser;
    HRESULT hr;
    // 웹브라우저 객체를 생성한다.
::CoInitialize(NULL);
    hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&pWebBrowser);
    if(pWebBrowser == NULL) 
        return;
    CString strAddress;
    strAddress.Format(strUrl);
    CString strHeader, strTarget; 
strHeader = "Content-Type: application/x-www-form-urlencoded\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ko; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5\r\nConnection: keep-alive"; 
strTarget = "_top"; // 새로운 창으로 띄움
    // 변수 선언 및 초기화 
VARIANT vtHeader = {0}, vtTarget= {0}, vtEmpty= {0}, vtPostData = {0}; 
vtHeader.vt = VT_BSTR; 
vtHeader.bstrVal = strHeader.AllocSysString(); 
vtTarget.vt = VT_BSTR; 
vtTarget.bstrVal = strTarget.AllocSysString(); 
::VariantInit(&vtEmpty); // Variant 초기화. 
GetPostData(&vtPostData, strData); // 사이트에 전달할 변수값 채워 넣는 함수
pWebBrowser->put_Visible(VARIANT_TRUE);     
hr = pWebBrowser->Navigate(strUrl.AllocSysString(), &vtEmpty, &vtTarget, &vtPostData, &vtHeader);

//브라우져가 모두 뜬 후에 호출해야 한다.
//즉 위치를 수정해야 하면, 그에 따른 pWebBrowser의 생성 및 제거의 시기를 변견해야 한다.
//CString strTmp = "JavaScript:GoDeliver()";
//hr = pWebBrowser->Navigate(strTmp.AllocSysString(), &vtEmpty, &vtTarget, &vtPostData, &vtHeader);
SysFreeString(vtHeader.bstrVal); // AllocSysString()을 쓰면 메모리 해제 해주어야 함
    SysFreeString(vtTarget.bstrVal);
    pWebBrowser->Release();
::CoUninitialize();
}
Posted by 띠깜
,