ObjAddRef() / ObjRelease() [AHK_L 53+]

°´Ã¼ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ ÁÙÀ̰ųª ´Ã¸³´Ï´Ù.

ObjAddRef(Ptr)
ObjRelease(Ptr)

¸Å°³º¯¼ö

Ptr

°ü¸®µÇÁö ¾Ê´Â °´Ã¼ Æ÷ÀÎÅÍ ¶Ç´Â COM ÀÎÅÍÆäÀ̽º Æ÷ÀÎÅÍ.

¹Ýȯ °ª

ÀÌ ÇÔ¼öµéÀº »õ·Î¿î ÂüÁ¶ Ƚ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ °ªÀº µð¹ö±ë ¸ñÀûÀ¸·Î¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.

°ü·Ã Ç׸ñ

´ÙÀ½ ±ÛµéÀº COM¿¡ Àû¿ëµÉ ¶§ÀÇ ÂüÁ¶ Ƚ¼ö¸¦ ´Ù·ç°í ÀÖÁö¸¸, ÀϹÝÀûÀ¸·Î ¿ÀÅäÇÖÅ° °´Ã¼¿¡µµ Àû¿ëµÇ´Â Áß¿äÇÑ °³³ä°ú ±ÔÄ¢À» ¾ð±ÞÇÕ´Ï´Ù: IUnknown::AddRef, IUnknown::Release, ÂüÁ¶ Ƚ¼ö ±ÔÄ¢.

¿¹Á¦

ComObjConnect¸¦ ÂüÁ¶ÇϽʽÿÀ.

obj := Object()

; ´ÙÀ½ µÎ ÁÙÀº µ¿µîÇÕ´Ï´Ù:
ptr1 := Object(obj)
ptr2 := ObjectToPointer(obj)

ObjectToPointer(obj) {
    if !IsObject(obj)
        return ""
    ptr := &obj
    ObjAddRef(ptr)
    return ptr
}

; Object() ¶Ç´Â ObjectToPointer()¸¦ ÅëÇÏ¿© ¿­¶÷µÈ Æ÷ÀÎÅÍ´Â °¢°¢ ¼öÀÛ¾÷À¸·Î Ç®¾îÁÖ¾î¾ß ÇÕ´Ï´Ù.
; ±×·¡¾ß °´Ã¼°¡ ¿µ¿øÈ÷ ÇØÁ¦µÇ¸ç »ç¿ëµÈ ¸Þ¸ð¸®µµ µ¹·ÁÁÙ ¼ö ÀÖ½À´Ï´Ù.
ObjRelease(ptr2)
ObjRelease(ptr1)