Q&A

  • axtivex를 종료시키면 브라우저가 종료되는건 어떻게..?
엑티브 엑스 폼을 만들었는데요.

이 엑티브 엑스 폼에 종료버튼을 넣구여.

close()를 주면 엑티브 엑스만 종료가 되지 않습니까?

근데. 브라우저도 같이 종료시키려면 어찌하면 좋을까여?

갈켜 주세요.



3  COMMENTS
  • Profile
    최석기 2000.08.28 20:37
    초보 100 wrote:

    > 엑티브 엑스 폼을 만들었는데요.

    > 이 엑티브 엑스 폼에 종료버튼을 넣구여.

    > close()를 주면 엑티브 엑스만 종료가 되지 않습니까?

    > 근데. 브라우저도 같이 종료시키려면 어찌하면 좋을까여?

    > 갈켜 주세요.

    >



    안녕하세요..

    델파이세상(http://www.freechal.com/delphiworld)에 최석기입니다..



    저 같은 경우에는 이런 식으로 했거든요..

    참고 하세요..



    먼저 익스플로러를 종료하는 웹페이지를 만들고 종료 버튼 클릭시 해당 페이지를 불러 들이면 되요..



    종료 페이지(close.htm)

    ----------------------------------------------------------------------------













    -------------------------------------------------------------------------------



    해당 Activx Form의 uses 구에 Urlmon를 선언해 주시구요.



    종료 버튼에서 다음과 같이 코딩하시면 익스플로러 종료하실 수 있을꺼예요..



    //로그 아웃 처리 버튼

    procedure TTMMainFormX.fsbLogoutClick(Sender: TObject);

    begin

    if Assigned(DM) then

    DM.Free;

    HlinkNavigateString(ComObject, '/abandon.asp');

    end;



    뭐 더 좋은 방법들도 있을꺼예요..



    참고하세요..

  • Profile
    초보 100 2000.08.29 02:51
    > //로그 아웃 처리 버튼

    > procedure TTMMainFormX.fsbLogoutClick(Sender: TObject);

    > begin

    > if Assigned(DM) then

    > DM.Free;

    > HlinkNavigateString(ComObject, '/abandon.asp');

    > end;



    위에서요.

    DM은 뭐지요.

    제가 초보라.. 자세히..

    헤헤 쩝. 좋은 하루 되시구여.

    홈페이지가 넘 이쁘더군여.

    곧 가입하겠음다...

  • Profile
    임정영 2001.07.05 17:09
    제가 맞은지 틀린지도 모르지만 제가 해결한 방법은 아래와 같습니다.

    혹시 도움이 될지 몰라서 이렇게....



    먼저 ActiveX에서는 Tform을 Auto Create하지 못하기 때문에 수동으로 Create 하는데요

    ActiveX form 에서 일단 Create 를 해주면 ( ex-> frmMain := TfrmMain.Create(nil); )

    종료시에 생성되었던 frmMain을 풀어줘야 한다는 것입니다.

    즉 frmMain.Free(); 이렇게요....

    그런데 여기서 문제는 끝나지 않더라고요 ActiveX form에서 어떤 이벤트에 의해서

    생성된 frmMain 같은 form같은 것이 떠 있는 상태에서 브라우져를 죽이게 되면

    에러가 생길 겁니다.

    정말 미치는 경우죠.

    하지만 저도 1년여 정도를 헤메다가 방법을 찾았습니다.

    혹시 IE에서 OCX에 파라메타를 전송하는 방법을 아시는지요.

    하여간 html에는 onload 와 onunload가 있는데 이놈들을 이용하는 거죠.

    onload에서 값을 ocx에 넘겨서 어떤 처리를 할 수도 있고(인증같은거) onunload는 IE를 죽일때

    OCX에 값을 넘기거나 어떤 이벤트를 발생시킬수 있습니다.

    즉 이 onunload란놈을 이용하여 ocx이벤트에서 frmMain.free(); frmMain.close(); 를 처리하시면

    브라우져를 죽일때 에러가 안납니다.

    예제는 아래와 같습니다.



    //// HTML부분












    classid="clsid:C76BD1C3-6EB9-11D5-AE20-1111177D5086"

    codebase="http://URL을 적고/TestOcx.cab"

    width=120

    height=30

    align=center

    hspace=0

    vspace=0

    >







    OCX 부분

    1 . TypeLibrary를 열어서 Property를 추가하세요..(sessionid, logout )

    2. 추가후 Refresh를 누르면 아래와 같이 두개가 생깁니다.



    function TfrmActiveXMain.Get_sessionid: OleVariant;

    begin

    여기는 값을 HTML로 넘기는 곳입니다.(ActiveX Form 생성될때)

    end;



    procedure TfrmActiveXMain.Set_sessionid(Value: OleVariant);

    Var

    sID : String;

    begin

    sID := Value;

    ActiveX Form이 생성될때 HTML에서 값을 받아서 어떤 작업을 원하시면 여기서 코딩처리 하시고요..

    end;





    function TfrmActiveXMain.Get_logout: OleVariant;

    begin

    여기는 값을 HTML로 넘기는 곳입니다.

    end;



    procedure TfrmActiveXMain.Set_logout(Value: OleVariant);

    var

    Logout : String;

    begin

    Logout := Value; // 여기서는 종료하는 마당이니 뭐 꼭 써야 할 필요는 없습니다.

    frmMain.free();

    frmMain.close();

    end;



    # 위의 예에서 frmMain는 ActiveX Form에서 수동으로 Create된 창입니다.



    초보 100 wrote:

    > > //로그 아웃 처리 버튼

    > > procedure TTMMainFormX.fsbLogoutClick(Sender: TObject);

    > > begin

    > > if Assigned(DM) then

    > > DM.Free;

    > > HlinkNavigateString(ComObject, '/abandon.asp');

    > > end;

    >

    > 위에서요.

    > DM은 뭐지요.

    > 제가 초보라.. 자세히..

    > 헤헤 쩝. 좋은 하루 되시구여.

    > 홈페이지가 넘 이쁘더군여.

    > 곧 가입하겠음다...