ShellExecute 를 이용해서 함 해보니 잘안되네요
처음에 한번
ShellExecute(0, "open", "IEXPLORE.EXE", "
http://www.xxx.com/default_batch.asp", NULL, SW_HIDE);
뛰우고
다음부터
ShellExecute(0, "open", "
http://www.xxx.com/default_batch.asp",0, NULL, SW_HIDE);
위와 같이 하면 iexplore 가 여러가 뜨지는 않고 될것 같은데
hide되었던 iexplore 가 show되어버리네요
------------------------------------------------------------------
그래서 com을 이용해서 해봤습니다.
com으로 iexplore를 띄우고
hide시켜둔 후에
주기적으로 navigate하시면 될것 같네요
1) Button3Click() 함수로 한번 explorer를 띄우고
2) Timer에서 Button4Click() 함수를 호출하면 됩니다.
3) 제대로 navigate했는지 확인하려면... CheckBox1Click() 함수를 이용하시구요
그럼 즐플
----------예제--------------------------------------------
#include "exdisp.h"
IWebBrowser2 *pWebBrowserG;
void __fastcall TForm1::Button3Click(TObject *Sender)
{
HRESULT hr;
// 웹브라우저 객체를 생성한다.
hr = ::CoCreateInstance(CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER, IID_IWebBrowser2, (void**)&pWebBrowserG);
if(FAILED(hr) || pWebBrowserG == NULL)
return ;
// Navigate()에 필요한 인자들을 초기화한다
VARIANT vtFlags, vtTarget, vtPostData, vtHeader;
::VariantInit(&vtFlags);
::VariantInit(&vtTarget);
::VariantInit(&vtPostData);
::VariantInit(&vtHeader);
// 웹브라우저를 화면에 안 보이게 한다
pWebBrowserG->put_Visible(VARIANT_FALSE);
// 사이트를 연다
WideString wstr="
http://cbuilder.borlandforum.com";
hr = pWebBrowserG->Navigate(wstr.c_bstr() , &vtFlags, &vtTarget, &vtPostData, &vtHeader);
SUCCEEDED(hr);
return ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
if(pWebBrowserG)
{
HRESULT hr;
VARIANT vtFlags, vtTarget, vtPostData, vtHeader;
::VariantInit(&vtFlags);
::VariantInit(&vtTarget);
::VariantInit(&vtPostData);
::VariantInit(&vtHeader);
// Edit 에 있는 url로 navigate한다.
WideString wstr=Edit_Url->Text;
hr = pWebBrowserG->Navigate(wstr.c_bstr() , &vtFlags, &vtTarget, &vtPostData, &vtHeader);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
// 웹브라우저를 화면에 보이게 한다
if(pWebBrowserG)
{
if(CheckBox1->Checked)
pWebBrowserG->put_Visible(VARIANT_TRUE);
else
pWebBrowserG->put_Visible(VARIANT_FALSE);
}
}
//---------------------------------------------------------------------------
사용자 님이 쓰신 글 :
: ShellExecute 를 사용하여 SW_HIDE로 특정 ASP웹페이지를 실행 시키고 있습니다.
:
: ShellExecute(this->m_hWnd, "open", "IEXPLORE.EXE", "
http://www.xxx.com/default_batch.asp", NULL, SW_HIDE);
:
: 를 SetTimer를 사용하여 5초마다 실행하고 있습니다.
: 그런데 메모리상에 IEXPLORE.EXE가 실행될때마다 한개씩 늘어나고 있어서
: 문제가 되고있습니다.
:
: 실제로 창을 열어서 그 창에서 계속 실행하는건 할 수 있지만, 오류같은부분이 있을 수 있기에
: 열었던 IEXPLORE.EXE로 계속 ShellExecute를 실행하고 싶습니다.
:
: 이럴 경우에 어떤 방법으로 해야하나요?
: 찾을 수가 없어서요..