Example #1
0
 static void ChangeWallPaper()
 {
     try
     {
         var pathElement = _driver.FindElementById("picture-background");
         var url         = pathElement.GetAttribute("src");
         if (_currentImageUrl != url)
         {
             _currentImageUrl = url;
             using (WebClient client = new WebClient())
             {
                 IActiveDesktop iad = shlobj.GetActiveDesktop();
                 client.DownloadFile(new Uri(url), "wallpaper");
                 iad.SetWallpaper(Path.Combine(Environment.CurrentDirectory, "wallpaper"), 0);
                 WALLPAPEROPT wopt = new WALLPAPEROPT();
                 iad.GetWallpaperOptions(ref wopt, 0);
                 wopt.dwStyle = WallPaperStyle.WPSTYLE_STRETCH;
                 wopt.dwSize  = WALLPAPEROPT.SizeOf;
                 iad.SetWallpaperOptions(ref wopt, 0);
                 iad.ApplyChanges(AD_Apply.ALL | AD_Apply.FORCE | AD_Apply.BUFFERED_REFRESH);
             }
         }
     }
     catch
     {
         //driver died most likely, it will get restarted
     }
 }
    private void ProduceThread()
    {
        IActiveDesktop ad = (IActiveDesktop) new ActiveDesktop();

        _signal.Set();
        while (true)
        {
            _signal.WaitOne();

            Job query;
            while (_queue.TryDequeue(out query))
            {
                object  retval = null;
                dynamic input  = query.input;
                try
                {
                    switch (query.method_idx)
                    {
                    case 0: ad.ApplyChanges((uint)input.dwFlags); break;

                    case 1: retval = StringDelegate((b) => ad.GetWallpaper(b, (uint)b.Capacity, (uint)input.dwFlags)); break;

                    case 2: ad.SetWallpaper((string)input.pwszWallpaper); break;

                    case 3: ad.GetWallpaperOptions((WallpaperOpt)(retval = new WallpaperOpt())); break;

                    case 4: ad.SetWallpaperOptions(new WallpaperOpt((dynamic)input.pwpo)); break;

                    case 5: retval = StringDelegate((b) => ad.GetPattern(b, (uint)b.Capacity)); break;

                    case 6: ad.SetPattern((string)input.pwszPattern); break;

                    case 7: ad.GetDesktopItemOptions((ComponentsOpt)(retval = new ComponentsOpt())); break;

                    case 8: ad.SetDesktopItemOptions(new ComponentsOpt((dynamic)input.pco)); break;

                    case 9: ad.AddDesktopItem(new Component((dynamic)input.pcomp)); break;

                    case 10: ad.AddDesktopItemWIthUI((IntPtr)input.hwnd, new Component((dynamic)input.pcomp), (uint)input.dwFlags); break;

                    case 11: ad.ModifyDesktopItem((Component)(retval = new Component((dynamic)input.pcomp)), (uint)input.dwFlags); break;

                    case 12: ad.RemoveDesktopItem(new Component((dynamic)input.pcomp)); break;

                    case 13: int pcItems; ad.GetDesktopItemCount(out pcItems); retval = pcItems; break;

                    case 14: ad.GetDesktopItem((int)input.nComponent, (Component)(retval = new Component((dynamic)input.pcomp))); break;

                    case 15: ad.GetDesktopItemByID((ulong)input.dwID, (Component)(retval = new Component((dynamic)input.pcomp))); break;

                    case 16: ad.GenerateDesktopItemHtml((string)input.pwszFileName, new Component((dynamic)input.pcomp)); break;

                    case 17: ad.AddUrl((IntPtr)input.hwnd, (string)input.pszSource, new Component((dynamic)input.pcomp), (uint)input.dwFlags); break;

                    case 18: ad.GetDesktopItemBySource((string)input.pszSource, (Component)(retval = new Component((dynamic)input.pcomp))); break;
                    }
                    query.retval = retval;
                }
                catch (Exception e)
                {
                    query.e = e;
                }
                query._signal.Set();
            }
        }
    }