簡體   English   中英

如何以編程方式在Windows Vista / 7上推進牆紙幻燈片放映?

[英]How to advance the wallpaper slideshow on windows vista/7 programatically?

在一個論壇stobject.dll ,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

我猜想IP /調用這些方法之一是行不通的。 我該怎么辦?

這兩個導出是標准COM導出,您必須弄清楚要使用哪個COM接口並以常規COM方式調用它們(如果使用Visual Studio,則可以在dll上運行OLE / COM對象查看器,並查看其類型庫(如果有)

我有類似的問題。 區別在於我想刪除當前的牆紙文件並強制進行幻燈片放映。 我發現在牆紙上更改了HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\Desktop\\General\\WallpaperSource注冊表項。 因此,我試圖刪除它所指向的文件。 還有...在大約十秒鍾內,牆紙被更換了! 看起來這迫使幻燈片繼續進行。

因此,這里有一個批處理文件可以解決問題。 它從注冊表獲取當前牆紙文件的值,使用臨時名稱重命名它,等待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%"

如果什么也沒有發生,請嘗試增加時間間隔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM