IDesktopWallpaper AdvanceSlideshow实现

时间:2017-07-18 14:46:52

标签: c# windows com

我尝试使用COM中公开的IDesktopWallpaper在Windows 10上推进背景幻灯片显示。

Here is the description of that native class

我使用的是here所描述的ComImport方法。

我的代码:

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)
    {}
}    

但调用AdvanceSlideShow时出现异常错误

"The method or operation is not implemented"

这是否意味着它根本无法运作? 如果没有,我怎样才能推进幻灯片放映?

1 个答案:

答案 0 :(得分:0)

实施缺失似乎实际上是有道理的。

您只能通过推进任何显示器来推进任何显示器上的幻灯片显示,无论您拥有多少显示器,它都会像一组显示器一样通过它们前进。因此,指定一个monitorId是没有意义的,因为幻灯片放映了一组图像,监视器不能自由关联。

所有这些都是因为幻灯片不能反向进行。但是,似乎这个想法是,由于幻灯片放映设置为随机播放,因此不会存储向后方向。

因此我们陷入了一组抽象的图像,由于随机播放而失去了设定的优势。

哦,好吧。