4

我正在尝试触发桌面幻灯片更改,但找不到公共 API 来执行此操作...

我越接近看到正在使用的方法的名称(它们使用的是 COM 对象,但我不知道实例化它的 CLSID)。

我已经知道如何更改桌面墙纸(我已经这样做了),我想要的是一种触发幻灯片转换的方法(Windows 7 的新功能)。

4

1 回答 1

4

这不能回答你的问题,你可能已经解决了,但是如果桌面幻灯片引擎(我称之为)已经启动(如果你调出“个性化”>“桌面背景”然后选择“ “图片位置”下拉菜单中的“Windows 桌面背景”,然后您会看到背景淡入淡出 - 这是引擎开启)然后您可以通过调用 JPEG 图片的“SetWallpaper”然后“ApplyChanges”来使用IActiveDesktop 界面' 带有以下参数:

AD_APPLY_ALL | AD_APPLY_FORCE | AD_APPLY_BUFFERED_REFRESH

当您这样做时,您会注意到幻灯片过渡效果用于显示您指定的壁纸。迷人的。

但是重新启动(或关闭 Explorer.exe 并重新启动它)并且相同的调用不会进行转换,它只会以旧的即时方式更改背景。使用 Spy++ 进行的一些挖掘表明,当幻灯片引擎运行时,实际的桌面 FolderView 不再位于窗口父/子关系中的“程序管理器”下,它由一个名为“WorkerW”的新窗口拥有,该窗口位于资源管理器内(捆绑很好地与您上面的调用堆栈)。换句话说,它正在从 Progman 控制桌面窗口。

所以你需要做的是弄清楚如何让资源管理器初始化桌面窗口的新所有者('幻灯片引擎'),然后你可以使用 IActiveDesktop 界面来更改背景。

于 2009-08-09T18:41:32.333 回答