2017-07-18 51 views
0

我试图使用COM中公开的IDesktopWallpaper在Windows 10上推进背景幻灯片。IDesktopWallpaper AdvanceSlideshow实现

Here is the description of that native class

我使用的ComImport方法描述here

我的代码:

var wallpaper = new DesktopWallpaperClass(); 
for (uint i = 0; i < wallpaper.GetMonitorDevicePathCount(); i++) 
{ 
    try 
    { 
     string path = wallpaper.GetMonitorDevicePathAt(i); 
     wallpaper.AdvanceSlideshow(path, DesktopSlideshowDirection.Forward); 
    } 
    catch (Exception ex) 
    {} 
}  

但有一个例外

"The method or operation is not implemented" 

这是否意味着它不能在所有的工作,以AdvanceSlideShow错误的电话吗? 如果不是,我怎样才能让它推进幻灯片?

+1

这就是我在Win10版本1607上得到的结果。虽然Enable()被声明为错误,但所有其他方法都可以。当作为第一个参数传递null时会更有趣。好吧,现在不行了,你需要微软的帮助才能成功。 –

+0

良好的调用null。这很奇怪。路径的签名不能是字符串......嗯 – JoeWarwick

回答

0

实现失踪似乎实际上有些意义。

无论您拥有多少显示器,它都会像一组显示器一样前进,您只能在任何显示器上前进幻灯片。因此,指定monitorI没有意义,因为幻灯片在一组图像中滚动,所以显示器不能自由关联。

所有这一切都浮现在幻灯片不能以相反方向进行的想法面前。但是,它的想法似乎是,因为幻灯片放映设置为随机播放,反向方向只是不存储。

因此,我们被一组抽象的图像卡住,其中的优势因洗牌而丢失。

唉。