C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[48075] Re:ShellExecute 함수를 쓰는데 질문있습니다.
장성호 [nasilso] 2796 읽음    2007-02-13 14:10
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를 실행하고 싶습니다.
:
: 이럴 경우에 어떤 방법으로 해야하나요?
: 찾을 수가 없어서요..

+ -

관련 글 리스트
48073 ShellExecute 함수를 쓰는데 질문있습니다. 사용자 1512 2007/02/13
48075     Re:ShellExecute 함수를 쓰는데 질문있습니다. 장성호 2796 2007/02/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.