Windows 7 如何在windows vista/7上以编程方式推进墙纸幻灯片放映?

Windows 7 如何在windows vista/7上以编程方式推进墙纸幻灯片放映?,windows-7,windows-vista,unmanaged,aero,wallpaper,Windows 7,Windows Vista,Unmanaged,Aero,Wallpaper,我读到Windows Aero幻灯片功能中的“下一个桌面背景”命令调用stobject.dll文件。因此,我运行了dumpbin来检查是否可以使用导出的方法来调用: Microsoft Visual Studio 9.0\VC\bin\dumpbin.exe /EXPORTS Windows\System32\stobject.dll Microsoft (R) COFF/PE Dumper Version 9.00.30729.01 Copyright (C) Microsoft C

我读到Windows Aero幻灯片功能中的“下一个桌面背景”命令调用
stobject.dll
文件。因此,我运行了dumpbin来检查是否可以使用导出的方法来调用:

Microsoft Visual Studio 9.0\VC\bin\dumpbin.exe /EXPORTS
     Windows\System32\stobject.dll
Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation.  All rights reserved.
Dump of file C:\Windows\System32\stobject.dll
File Type: DLL
Section contains the following exports for stobject.dll
00000000 characteristics
49EE914D time date stamp Wed Apr 22 00:38:53 2009
    0.00 version
       1 ordinal base
       2 number of functions
       2 number of names
ordinal hint RVA      name
      1    0 00001A28 DllCanUnloadNow
      2    1 000059A9 DllGetClassObject
Summary
    1000 .data
    2000 .reloc
   1A000 .rsrc
   1A000 .text

我想如果我p/调用其中一个方法,它将不起作用。我该怎么办?

这两个导出都是标准的COM导出,您必须确定要使用哪个COM接口,并以正常的COM方式调用它们(如果有Visual Studio,您可以在dll上运行OLE/COM对象查看器,如果有类型库,则查看其类型库)

我也遇到过类似的问题。不同的是我想删除当前的墙纸文件并强制幻灯片播放。我发现在墙纸上更改
HKEY\u CURRENT\u USER\Software\Microsoft\internetexplorer\Desktop\General\wallpersource
注册表项。所以,我试图删除它指向的文件。而且。。。大约十秒钟后,墙纸就换了!看起来这迫使幻灯片继续播放

因此,这里有一个批处理文件来实现这个技巧。它从注册表中获取当前墙纸文件值,用临时名称重命名,等待10秒,然后将其重命名回原始文件

@echo off

set WallpaperFilePath=

For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\General" /v WallpaperSource`) Do set WallpaperFilePath=%%J
if "%WallpaperFilePath%" equ "" goto :eof

For %%i In ("%WallpaperFilePath%") Do set WallpaperFileName=%%~nxi
set WallpaperFileNameTmp=__%WallpaperFileName%__

echo "%WallpaperFilePath%" "%WallpaperFileName%" "%WallpaperFileNameTmp%"

ren "%WallpaperFilePath%" "%WallpaperFileNameTmp%"
ping -n 10 localhost > Nul
For %%i In ("%WallpaperFilePath%") Do ren "%%~dpi%WallpaperFileNameTmp%" "%WallpaperFileName%"

如果没有发生任何情况,请尝试增加时间间隔。

------------------------------------OLE/COM对象查看器-----------------IMoniker::BindToObject在从(“C:\Windows\System32\stobject.dll”)创建的文件名字对象上失败。文件MK_E_INVALIDEXTENSION($800401E6)的扩展名不正确------------------------------------------确定---------------------------------------------OLE/COM对象查看器-----------------LoadTypeLib(C:\Windows\System32\stobject.dll)失败。加载类型库/DLL时出错。键入_E_CANTLOADLIBRARY($80029C4A)------------------------------------好的-----------------我不知道如何通过名称或guid查找此库。在OLE/COM对象查看器中打开文件会引发上述异常。试图在VisualStudio项目中直接引用它引发了另一个异常。奖金将颁发给显示我应该采取的步骤的人。-------------------------------------Microsoft Visual Studio-----------------无法添加对“C:\WINDOWS\system32\stobject.dll”的引用。请确保该文件可访问,并且是有效的程序集或COM组件。----------------------------好的------------------我终于在OleViewer上找到了它,我还可以将dll拖放到它上面。它公开了几个接口。我不知道怎么继续。