// This overload method is used to get Tab Item text.
        internal static unsafe string GetItemText(IntPtr hwnd, int index, NativeMethods.TCITEM item)
        {
            ProcessorTypes localBitness;
            ProcessorTypes remoteBitness;
            GetProcessTypes(hwnd, out localBitness, out remoteBitness);

            if (localBitness == remoteBitness)
            {
                return GetTextWithinStructure(hwnd, NativeMethods.TCM_GETITEMW, new IntPtr(index), new IntPtr(&item), Marshal.SizeOf(item.GetType()), new IntPtr(&item.pszText), item.cchTextMax);
            }
            else if (remoteBitness == ProcessorTypes.Processor32Bit)
            {
                TCITEM_32 item32 = new TCITEM_32(item);

                return GetTextWithinStructureRemoteBitness(hwnd, NativeMethods.TCM_GETITEMW, new IntPtr(index),
                    new IntPtr(&item32), Marshal.SizeOf(item32.GetType()), new IntPtr(&item32.pszText),
                    item32.cchTextMax, remoteBitness, false);

            }
            else if (remoteBitness == ProcessorTypes.Processor64Bit)
            {
                TCITEM_64 item64 = new TCITEM_64(item);

                return GetTextWithinStructure(hwnd, NativeMethods.TCM_GETITEMW, new IntPtr(index), new IntPtr(&item64), Marshal.SizeOf(item64.GetType()), new IntPtr(&item64.pszText), item64.cchTextMax);
            }
            return "";
        }
        //------------------------------------------------------
        //
        //  Tab Control Methods that support cross process / cross bitness
        //
        //------------------------------------------------------

        #region Tab Contrl Methods

        // This overload method is used to get Tab Item data.
        internal static unsafe bool GetItem(IntPtr hwnd, int index, ref NativeMethods.TCITEM item)
        {
            ProcessorTypes localBitness;
            ProcessorTypes remoteBitness;
            GetProcessTypes(hwnd, out localBitness, out remoteBitness);

            if (localBitness == remoteBitness)
            {
                fixed (NativeMethods.TCITEM* pItem = &item)
                {
                    return XSend(hwnd, NativeMethods.TCM_GETITEMW, new IntPtr(index), new IntPtr(pItem), Marshal.SizeOf(item.GetType()));
                }
            }
            else if (remoteBitness == ProcessorTypes.Processor32Bit)
            {
                TCITEM_32 item32 = new TCITEM_32(item);

                bool result = XSend(hwnd, NativeMethods.TCM_GETITEMW, new IntPtr(index), new IntPtr(&item32), Marshal.SizeOf(item32.GetType()));

                if (result)
                {
                    item = (NativeMethods.TCITEM)item32;
                }

                return result;
            }
            else if (remoteBitness == ProcessorTypes.Processor64Bit)
            {
                TCITEM_64 item64 = new TCITEM_64(item);

                bool result = XSend(hwnd, NativeMethods.TCM_GETITEMW, new IntPtr(index), new IntPtr(&item64), Marshal.SizeOf(item64.GetType()));

                if (result)
                {
                    item = (NativeMethods.TCITEM)item64;
                }

                return result;
            }
            return false;
        }