|
BOOL OpenNewWindowEx(LPCTSTR pAddress, BOOL bMenu, BOOL bToolBar,
BOOL bAddressBar, BOOL bStatusBar, BOOL bResize,
int x, int y, int cx, int cy)
{
CoInitialize(NULL);
IWebBrowser2 *pWebBrowser;
HRESULT hr;
// 웹브라우저 객체를 생성한다.
hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&pWebBrowser);
if(FAILED(hr) || pWebBrowser == NULL) return FALSE;
// 메뉴바를 출력할지 설정한다
pWebBrowser->put_MenuBar(bMenu ? VARIANT_TRUE : VARIANT_FALSE);
// 툴바를 출력할지 설정한다
pWebBrowser->put_ToolBar(bToolBar ? VARIANT_TRUE : VARIANT_FALSE);
// 주소창을 출력할지 설정한다
pWebBrowser->put_AddressBar(bAddressBar ? VARIANT_TRUE : VARIANT_FALSE);
// 상태바를 출력할지 설정한다
pWebBrowser->put_StatusBar(bStatusBar ? VARIANT_TRUE : VARIANT_FALSE);
// 크기 조절을 가능하게 할지 설정한다
pWebBrowser->put_Resizable(bResize ? VARIANT_TRUE : VARIANT_FALSE);
// 웹브라우저의 위치와 크기를 설정한다
if(x >= 0) pWebBrowser->put_Left(x);
if(y >= 0) pWebBrowser->put_Top(y);
if(cx >= 0) pWebBrowser->put_Width(cx);
if(cy >= 0) pWebBrowser->put_Height(cy);
CString strAddress = pAddress;
// Navigate()에 필요한 인자들을 초기화한다
VARIANT vtFlags, vtTarget, vtPostData, vtHeader;
::VariantInit(&vtFlags);
::VariantInit(&vtTarget);
::VariantInit(&vtPostData);
::VariantInit(&vtHeader);
// 웹브라우저를 화면에 보이게 한다
pWebBrowser->put_Visible(VARIANT_TRUE);
// 사이트를 연다
hr = pWebBrowser->Navigate(strAddress.AllocSysString(), &vtFlags, &vtTarget,
&vtPostData, &vtHeader);
if(FAILED(hr)) return FALSE;
// 웹브라우저 인터페이스의 참조 횟수를 줄인다
pWebBrowser->Release();
CoUninitialize();
return SUCCEEDED(hr);
}
BOOL bAddressBar, BOOL bStatusBar, BOOL bResize,
int x, int y, int cx, int cy)
{
CoInitialize(NULL);
IWebBrowser2 *pWebBrowser;
HRESULT hr;
// 웹브라우저 객체를 생성한다.
hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,
IID_IWebBrowser2, (void**)&pWebBrowser);
if(FAILED(hr) || pWebBrowser == NULL) return FALSE;
// 메뉴바를 출력할지 설정한다
pWebBrowser->put_MenuBar(bMenu ? VARIANT_TRUE : VARIANT_FALSE);
// 툴바를 출력할지 설정한다
pWebBrowser->put_ToolBar(bToolBar ? VARIANT_TRUE : VARIANT_FALSE);
// 주소창을 출력할지 설정한다
pWebBrowser->put_AddressBar(bAddressBar ? VARIANT_TRUE : VARIANT_FALSE);
// 상태바를 출력할지 설정한다
pWebBrowser->put_StatusBar(bStatusBar ? VARIANT_TRUE : VARIANT_FALSE);
// 크기 조절을 가능하게 할지 설정한다
pWebBrowser->put_Resizable(bResize ? VARIANT_TRUE : VARIANT_FALSE);
// 웹브라우저의 위치와 크기를 설정한다
if(x >= 0) pWebBrowser->put_Left(x);
if(y >= 0) pWebBrowser->put_Top(y);
if(cx >= 0) pWebBrowser->put_Width(cx);
if(cy >= 0) pWebBrowser->put_Height(cy);
CString strAddress = pAddress;
// Navigate()에 필요한 인자들을 초기화한다
VARIANT vtFlags, vtTarget, vtPostData, vtHeader;
::VariantInit(&vtFlags);
::VariantInit(&vtTarget);
::VariantInit(&vtPostData);
::VariantInit(&vtHeader);
// 웹브라우저를 화면에 보이게 한다
pWebBrowser->put_Visible(VARIANT_TRUE);
// 사이트를 연다
hr = pWebBrowser->Navigate(strAddress.AllocSysString(), &vtFlags, &vtTarget,
&vtPostData, &vtHeader);
if(FAILED(hr)) return FALSE;
// 웹브라우저 인터페이스의 참조 횟수를 줄인다
pWebBrowser->Release();
CoUninitialize();
return SUCCEEDED(hr);
}
[출처] IWebBrowser2 를 이용해서 웹브라우저 원하는 위치에 띄우기 |작성자 곤
'웹, HTML' 카테고리의 다른 글
ActiveX 컨트롤로부터 URL 알아내기 (0) | 2008.08.30 |
---|---|
ie7에서 self close (1) | 2008.08.26 |
ActiveX로 웹페이지의 URL가져오기 (0) | 2008.08.14 |
부분 소스 보기 (IE6, IE7) (2) | 2008.07.31 |
웹 이미지 주소 복사하기 (IE6, IE7) (1) | 2008.07.31 |
ATL을 이용한 IE Browser Extension component 만들기 (1) | 2008.07.29 |
BrowserHelperObject(BHO) 개념 및 프로젝트 생성 예제 (1) | 2008.07.26 |