¿©Çàºí·Î±×
[±âŸÁö¿ª]  µ¨ÆÄÀÌ ActiveX ÄÁÆ®·Ñ¿¡¼­ ISafetyObject ÀÎÅÍÆäÀ̽º ±¸Çö
ÀÛ¼ºÀÚ : ¿À¼öÂù  ÀÛ¼ºÀÏ : 2006-09-29  Á¶È¸ : 233
  • Ãâ ó : ¹ÌÄ£º´¾Æ¸®°¡ ÀÛ¼º..

    Âü °í : MS ActiveX SDK Reference
    Inside ATL/COM with Visual C++ Programming - Àüº´¼± Àú

    ¼öÁ¤ÀÏ :

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

    Âü°í : µ¨4¿¡¼­´Â ¾Æ·¡ÀÇ Äڵ尡 ¾à°£ º¯°æµÇ¾î¾ß ÇÕ´Ï´Ù..
    °ü·ÃµÈ ³»¿ëÀº ActiveX ÀÚ·á½Ç¿¡ ¿Ã·ÁµÐ ActiveX ÄÁÆ®·ÑÀÇ º¸¾Èó¸®
    ³»¿ëÀ» Âü°íÇØÁÖ¼¼¿ä..


    ActiveX ÄÁÆ®·ÑÀº ÀÚ½ÅÀÌ ºÒ·ÁÁú¶§ ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇÏ°Ô µÇ´Â °æ¿ì°¡ ÀÖ½À
    ´Ï´Ù..


    Âü°í : MSÀÇ ActiveX ±â¼úÀº ÇöÀç Å©°Ô 3°¡Áö·Î ±¸ºÐµÇ´Âµ¥..
    ¾Æ·¡¿Í °°½À´Ï´Ù..

    ActiveX ÄÁÆ®·Ñ
    ¿ì¸®°¡ ÈçÈ÷ ¾Ë°í ÀÖ´Â ÄÁÆ®·ÑÀ» ĪÇÏ´Â ¸íĪÀÔ´Ï´Ù..
    ±³À°»ç¾÷ ¹× °ÔÀÓÁ¸ ¿ë¿ª, ÆÛÁñ µî ÀúÈñ°¡ ¸¸µé¾ú´ø
    ÄÁÆ®·ÑµéÀÌ ÀÌ¿¡ ¼ÓÇϰí ÀÌ ÄÁÆ®·ÑµéÀº OLE ¼­¹ö°¡ µÇ°ÚÁö¿ä..
    ÁÖ·Î ÀÎÅÍ³Ý ÀͽºÇ÷η¯¶ó´Â ÄÁÅ×À̳ʿ¡ ÀÇÇØ ·ÎµùµÇ´Â..
    ÀÌ ¿Ü¿¡µµ ASP ¼­¹ö ÄÄÆ÷³ÍÆ®, MTS ÄÄÆ÷³ÍÆ®, ATL·Î ¸¸µé¾îÁö´Â °¢Á¾ COM
    µîµî MSÀÇ ¿Ø¸¸ÇÑ °ÍµéÀº ¸ðÁ¶¸® ActiveX ÄÁÆ®·ÑÀ̶ó ºÒ·¯µµ µË´Ï´Ù..
    ¹°·Ð OLE ¼­¹ö »Ó ¾Æ´Ï¶ó ÄÁÅ×À̳ʵµ ActiveX ÄÁÆ®·Ñ·Î ºÒ¸³´Ï´Ù..

    ActiveX ¹®¼­
    °¢Á¾ ActiveX ÄÁÆ®·Ñµé°ú ¿¬°èµÇ¾î ·ÎµùµÉ ¼ö ÀÖ´Â ¹®¼­Æ÷¸äÀ» ĪÇÕ´Ï´Ù..
    ´ëÇ¥ÀûÀÎ ¿¹°¡ IE¿Í ¿ÀÇǽº°¡ ¼³Ä¡µÇ¾î ÀÖ´Ù¸é ÀÎÅͳݿ¡¼­ IE¸¦ ÀÌ¿ëÇØ ¿À
    Çǽº·Î ÀÛ¼ºµÈ ¸ðµç ¹®¼­¸¦ ¹Ù·Î º¼ ¼ö ÀÖ½À´Ï´Ù..
    ÀÌ °æ¿ì ¿ÀÇǽº ÇÁ·Î±×·¥ÀÌ OLE¼­¹ö°¡ µÇ°í IE°¡ ÄÁÅ×À̳ʰ¡ µÇ¾î ¿ÀÇǽº
    ¹®¼­¸¦ ·ÎµùÇÏ°Ô µÇ´Âµ¥ ÀÌ·¸°Ô ActiveX ±â¼úÀ» ÀÌ¿ëÇØ ·ÎµùµÉ ¼ö ÀÖ´Â
    ¹®¼­¸¦ ĪÇÏ´Â ¸íĪÀ̸ç Á» ´õ Æ÷°ýÀûÀ¸·Î´Â ÀÌ¿¡ °ü·ÃµÈ ±â¼úµéÀ»
    °¡¸®Åµ´Ï´Ù..

    ActiveX ½ºÅ©¸³ÆÃ
    ÀÎÅͳݿ¡¼­ ½ºÅ©¸³Æ® ¾ð¾î¸¦ »ç¿ëÇϱâ À§ÇÑ ±â¼ú°ú ±× °³Ã¼µéÀ» °¡¸®Å°´Â
    ¸íĪÀÔ´Ï´Ù..
    IE°¡ ´ëÇ¥ÀûÀÎ ActiveX ½ºÅ©¸³ÆÃÀÇ È£½ºÆ® ÇÁ·Î±×·¥À̰í
    MSÀÇ VBScript¿Í JScript (NetscapeÀÇ ÀÚ¹Ù ½ºÅ©¸³Æ®¿Í ½ºÆåÀº
    ºñ½ÁÇÏÁö¸¸ ¾à°£ ´Ù¸¥Á¡ÀÌ ÀÖÁÒ..)°¡ ´ëÇ¥ÀûÀÎ ActiveX ½ºÅ©¸³ÆÃ
    ¿£ÁøÀÇ ¿¹ÀÔ´Ï´Ù.. ¹°·Ð MS¿¡¼­ Á¤ÀÇÇϰí ÀÖ´Â ÀÎÅÍÆäÀ̽º¸¦
    µû¸£µµ·Ï Á¦ÀÛµÈ ½ºÅ©¸³Æ® ¿£ÁøÀº IE¿¡ Ãß°¡°¡ °¡´ÉÇÕ´Ï´Ù..
    °á±¹, ÀÎÅͳݿ¡¼­ ´Ù¾çÇÑ ½ºÅ©¸³Æ®¸¦ Áö¿øÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â
    ±â¼úÀ» ¸»ÇÏ´Â °ÍÀ̶ó ÇÒ ¼ö ÀÖ½À´Ï´Ù..


    ActiveX ÄÁÆ®·ÑÀÌ ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇÒ¶§ ÄÁÅ×ÀÌ³Ê (ÁÖ·Î IE°¡ µÇ°ÚÁÒ..)´Â
    Ä£ÀýÇÏ°Ô »ç¿ëÀÚ¿¡°Ô À§Ç輺ÀÌ ÀÖ´Ù´Â °æ°í¹®À» º¸¿©ÁÖ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù..

    IEÀÇ °æ¿ì º¸¾Èµî±ÞÀ» º¸ÅëÀ¸·Î ÇØ³õ´Â °æ¿ì 100% °æ°í¸Þ½ÃÁö¸¦ º¸¿©ÁÖ°í
    ÀÖ½À´Ï´Ù.. ¿ÀºêÁ§Æ® ű×Áß ÆÄ¶ó¹ÌÅ͸¦ ³Ñ±æ ¼ö ÀÖ´Â °æ¿ì°¡ Àִµ¥, ÀÌ °æ¿ìµµ
    ActiveX ½ºÅ©¸³ÆÃÀ» »ç¿ëÇÏ°Ô µÇ´Âµ¥ ¿­½ÉÈ÷ ¸¸µé¾î³í ÄÁÆ®·ÑÀÌ ·Îµù½Ã¸¶´Ù ÀÌ·± ¿¡
    ·¯¸Þ½ÃÁö¸¦ º¸ÀÎ´Ù¸é ½ÇÁ¦ »çÀÌÆ®¿¡ Àû¿ë½Ã ¹®Á¦°¡ ¾Æ´Ò ¼ö ¾ø½À´Ï´Ù..

    MS¿¡¼­´Â ÀÌ·± °æ¿ì ÄÁÆ®·ÑÀÌ ¾ÈÀüÇÏ´Ù´Â ÁõºùÀ» À§ÇØ ISafetyObjec¶ó´Â ÀÎÅÍÆäÀ̽º
    ¸¦ Á¤ÀÇÇØµÖ ÄÁÆ®·Ñ ³»ºÎ¿¡¼­ ÀÌ ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϸé ÄÁÅ×ÀÌ³Ê (IE)°¡ °æ°í¸Þ½Ã
    Áö¸¦ º¸¿©ÁÖÁö ¾Êµµ·Ï ÁغñÇØµÎ°í ÀÖ½À´Ï´Ù..

    MFC¸¦ ÀÌ¿ëÇØ ¸¸µç AtiveX ÄÁÆ®·Ñ¿¡¼­ ±¸ÇöÇÏ´Â ¹æ¹ýÀº ÀÌ¹Ì Á¶±âºÀ¾¾°¡ ÀÌ °Ô½ÃÆÇ
    ¿¡ ¿Ã·ÁµÎ¾ú°í Àú´Â µ¨ÆÄÀÌ¿¡¼­ ±¸ÇöÇÏ´Â ¹æ¹ýÀ» ¿Ã¸³´Ï´Ù..

    ±Ùµ¥ ÀÌ°Ô ¾ÆÁÖ ¿ô±ä°Ô.. ¾Æ¹«Áþµµ ¾ÈÇϱ¸ ±×³É ÀÎÅÍÆäÀ̽º¸¸ ¿ì°Ü ³ÖÀ¸¸é µÈ´Ù´Â°Å
    ÁÒ.. ÈêÈê.. ¾ÆÁ÷±îÁø ¹¹ÇÏ·¯ ¸¸µé¾ú³ª Àǽɰ¡´Â ±â´ÉÀÌ°í °³¹ßÀÚ ±ÍÂú°Ô¸¸ ÇØ³ù´Â
    µ¥ ´õ µÎ°í ºÁ¾ß°ÚÁÒ..



    ÀÏ´Ü º£À̽º Ŭ·¡½ºÀÇ ´ÙÁß»ó¼Ó ºÎºÐ¿¡ IObjectSafety¸¦ Ãß°¡ÇÕ´Ï´Ù..


    TExamShowX = class(TActiveForm, IExamShowX, IPersistPropertyBag,
    IObjectSafety)


    IPersistPropertyBag ÀÎÅÍÆäÀ̽º´Â ű׸¦ ÀÌ¿ëÇØ HTML ÆäÀÌÁö·ÎºÎÅÍ °ªÀ»
    ³Ñ°Ü¹Þ±â À§ÇØ Ãß°¡µÈ ºÎºÐÀÔ´Ï´Ù..

    ¹¹ °°ÀÌ ¼³¸íÇÏÁÒ..
    °á±¹ ÆÄ¶ó¹ÌÅ͸¦ ³Ñ±â´Ù º¸´Ï ½ºÅ©¸³Æ® ¾ÈÀü¼ºÀ» º¸Àå¹Þ¾Æ¾ß Çß´ø °æ¿ì´Ï±î¿ä..


    protected: ¿¡ ¾Æ·¡¿Í °°Àº ³»¿ëÀ» Ãß°¡ÇÕ´Ï´Ù..


    function IPersistPropertyBag.GetClassID =
    PersistPropBagGetClassID ;
    function IPersistPropertyBag.initNew =
    PersistPropBagInitNew ;
    function IPersistPropertyBag.Load = PersistPropBagLoad ;
    function IPersistPropertyBag.Save = PersistPropBagSave ;
    function PersistPropBagGetClassID(out classID : TCLSID)
    : HResult ; stdcall ;
    function PersistPropBagInitNew : HResult ; stdcall ;
    function PersistPropBagLoad(const pPropBag:IPropertyBag ;
    const pErrorLog:IErrorLog) : HResult ; stdcall ;
    function PersistPropBagSave(const pPropBag:IPropertyBag ;
    fClearDirty:BOOL ; fAveAllProperties:BOOL)
    : HResult ; stdcall ;

    function IObjectSafety.GetInterfaceSafetyOptions
    = ObjectSafetyGetInterfaceSafetyOptions ;
    function ObjectSafetyGetInterfaceSafetyOptions(riid:TIID ;
    var dwSupportedOptions:DWORD ;
    var dwEnabledOptions:DWORD) : HResult ; stdcall;
    function IObjectSafety.SetInterfaceSafetyOptions
    = ObjectSafetySetInterfaceSafetyOptions ;
    function ObjectSafetySetInterfaceSafetyOptions(riid:TIID ;
    dwOptionsSetMask:DWORD ;
    dwEnabledOptions:DWORD) : HResult ; stdcall ;


    ±×¸®°í ½ÇÁ¦ ±¸ÇöºÎ´Â ¾Æ·¡¿Í °°ÀÌ ÄÚµùÀ» ÇØÁÖ½Ã¸é µÇÁö¿ä..


    function TExamShowX.PersistPropBagGetClassID
    (out classID : TCLSID) : HResult ;
    begin
    Result := S_OK ;
    end ;

    function TExamShowX.PersistPropBagInitNew : HResult ;
    begin
    Result := S_OK ;
    end ;

    function TExamShowX.PersistPropBagLoad
    (const pPropBag:IPropertyBag ;
    const pErrorLog:IErrorLog) : HResult ;
    var
    v : OleVariant ;
    begin
    if pPropBag.Read(ServerIP,v,pErrorLog)=S_OK then
    begin
    m_sServerIP := v ;
    Timer.Enabled := True ;
    end ;
    Result := S_OK ;
    end ;

    function TExamShowX.PersistPropBagSave
    (const pPropBag:IPropertyBag ;
    fClearDirty:BOOL ; fAveAllProperties:BOOL)
    : HResult ; stdcall ;
    var
    v : OleVariant ;
    begin
    v := m_sServerIP ;
    pPropBag.Write(ServerIP,v) ;
    Result := S_OK ;
    end ;

    function TExamShowX.ObjectSafetyGetInterfaceSafetyOptions
    (riid:TIID ; var dwSupportedOptions:DWORD ;
    var dwEnabledOptions:DWORD) : HResult ; stdcall;
    begin
    Result := S_OK ;
    end ;

    function TExamShowX.ObjectSafetySetInterfaceSafetyOptions
    (riid:TIID ; dwOptionsSetMask:DWORD ;
    dwEnabledOptions:DWORD) : HResult ; stdcall;
    begin
    Result := S_OK ;
    end ;


    ½ÇÁ¦ ÆÄ¶ó¹ÌÅÍ °ªÀ» ¹Þ´Â ºÎºÐ¸¸ »©°í´Â S_OK¸¦ ³Ñ±â´Â°Ô ÀüºÎÀÔ´Ï´Ù..

    ¹°·Ð ½ÇÁ¦ °¢ ÀÎÅÍÆäÀ̽ºµéÀÇ ±¸ÇöÀº Á» ´õ º¹ÀâÇÏÁö¸¸.. Á¦°¡ Å×½ºÆ®Çغ» °á°í·Î´Â
    ÀÎÅÍÆäÀ̽º¿Í ¸Þ½îµå¸¸ Á¸ÀçÇϰí S_OK ¸¸ ¸®ÅϵǸé ÀÎÅÍ³Ý ÀͽºÇ÷η¯´Â ¾ÆÁÖ Çູ
    ÇØ ÇÏ´õ±º¿ä..


    ±â¶÷..
    ¸ñ·Ï