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();
}
'프로그래밍 팁 > etc' 카테고리의 다른 글
시스템 설정 변경(SystemParametersInfo) (0) | 2010.10.15 |
---|---|
PE 체크섬(Checksum) 활용 (0) | 2010.10.15 |
프로세스 이름으로 PID 찾기 (0) | 2010.08.12 |
프로세스 이름으로 핸들찾기 (0) | 2010.08.12 |
유니코드 구분 예제 (1) | 2010.06.08 |