예제 #1
0
        // Creates a new token and meta data with provided Guid
        // Updates the token meta data if already exists.
        internal TokenModel CreateOrUpdate(System.Guid guid, TokenModel request)
        {
            TokenModel retValue = null;

            if (tokenManager.TryGet(guid, out retValue) == TokenStatus.Available)
            {
                retValue = tokenManager.UpdateToken(retValue, request);
            }
            else
            {
                retValue = tokenManager.AddToken(request);
            }
            return(retValue);
        }
예제 #2
0
        public static void CreateFreedomTile(
            Guid productId,
            string navigationUri,
            string taskName = "_default",
            Func <HackedShellTileValues> creationProperties = null,
            int tileTemplate = 5)
        {
            //calc = {5B04B775-356B-4AA0-AAF8-6491FFEA5603}

            var    appid = TokenmanagerSingleton.GetAppIDFromProductID(productId);
            IToken token = null;

            TokenManager.MakeToken(appid, navigationUri, tileTemplate /* 5 = default*/ /*initialData.TemplateType*/, out token);
            token.set_InvocationInfo(taskName, navigationUri); //"decompiled default => _default{7C288D6D-AC47-4ac8-A849-9147FF693061}"
            uint num2       = (uint)(tileTemplate /*initialData.TemplateType*/ << 0x10);
            uint propertyId = num2 | 0x25;

            token.set_Property(propertyId, "");

            if (creationProperties != null)
            {
                var enumKeyPair = creationProperties();
                foreach (var property in enumKeyPair)
                {
                    uint val = (uint)(((TOKEN_PROPERTY_TYPE)(uint)(tileTemplate << 0x10)) | property.Key);

                    token.set_Property(val, property.Value);
                }
            }

            var hr = TokenManager.AddToken(token);

            ThrowExceptionFromHResult(hr, new InvalidOperationException());
        }
예제 #3
0
        static void Main(string[] args)
        {
            TokenManager tokenManager = new TokenManager();
            tokenManager.AddToken("yukan", "YukanZhang");
            DateTime dt = DateTime.Now;
            tokenManager.VerifyUserTokenValid("yukan", out dt);
            tokenManager.AddToken("yang", "YangGe");
            tokenManager.VerifyUserTokenValid("yukan", out dt);
            
            // Test Constructor
            TokenManager tm2 = new TokenManager(tokenManager);
            tm2.VerifyUserTokenValid("yang", out dt);
            tm2.VerifyUserTokenValid("yukan", out dt);

            Thread.Sleep(20);
            tokenManager.TokenManagerExit();
            tm2.TokenManagerExit();
        }
예제 #4
0
        public static void Create(Uri navigationUri, Microsoft.Phone.Shell.ShellTileData initialData)
        {
            if (navigationUri == null)
            {
                throw new ArgumentNullException("navigationUri");
            }
            if (initialData == null)
            {
                throw new ArgumentNullException("initialData");
            }
            if (DEFAULT.Equals(navigationUri))
            {
                throw new ArgumentOutOfRangeException("navigationUri");
            }
            if (navigationUri.IsAbsoluteUri)
            {
                throw new ArgumentException("navigationUri cannot be absolute");
            }
            if ((navigationUri.ToString().IndexOf('/') != 0) && (navigationUri.ToString().IndexOf('?') != 0))
            {
                throw new UriFormatException();
            }
            int hr   = 0;
            var data = (Microsoft.Phone.Shell.StandardTileData)initialData;

            if ((data != null) && IsTileContainsAnyRemoteURL(data))
            {
                var    xml      = ConstructTokenXmlString(data, navigationUri.ToString());
                byte[] tokenXml = HardConvertUnicodeToASCIIByte(xml);
                var    schedule = new PM_LIVETOKEN_SCHEDULE();
                schedule.recurrenceType = PM_LIVETOKEN_RECURRENCE_TYPE.PM_LIVETOKEN_RECURRENCE_TYPE_INSTANT;
                schedule.fUserNoneIdle  = true;

                hr = TokenManager.CreateTokenWithLiveTokenSubscription(AppId, navigationUri.ToString(), ((data.BackgroundImage != null) && IsRemoteUri(data.BackgroundImage)) ? data.BackgroundImage.OriginalString.ToString() : null, ((data.BackBackgroundImage != null) && IsRemoteUri(data.BackBackgroundImage)) ? data.BackBackgroundImage.OriginalString.ToString() : null, ref schedule, tokenXml, (uint)tokenXml.Length);
            }
            else
            {
                IToken token          = null;
                string taskParameters = navigationUri.ToString();
                TokenManager.MakeToken(AppId, navigationUri.ToString(), 5 /* 5 = default*/ /*initialData.TemplateType*/, out token);
                /*initialData.*/
                //SerializeToToken(data, token);
                if (navigationUri.ToString().IndexOf('/') == 0)
                {
                    taskParameters = "#" + navigationUri.ToString();
                }
                // Dllimport => 8dc5214e-88fa-4c2d-a379-2cd74fe24b72
                token.set_InvocationInfo("_default{7C288D6D-AC47-4ac8-A849-9147FF693061}", taskParameters);
                uint num2       = (uint)(5 /*initialData.TemplateType*/ << 0x10);
                uint propertyId = num2 | 0x25;
                token.set_Property(propertyId, "");
                hr = TokenManager.AddToken(token);
            }
            ThrowExceptionFromHResult(hr, new InvalidOperationException());
        }