2009-10-23 11 views
1

J'ai lu on a forum que la commande "Next Desktop Background" dans la fonction Windows Aero Slideshow appelle le fichier stobject.dll. Donc, je runned le dumpbin pour vérifier wheter je pouvait voir une méthode exportée appeler:Comment faire pour avancer le diaporama de fond d'écran sur Windows Vista/7 par programmation?

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 

Je suppose que si je P/Invoke une de ces méthodes, il ne fonctionnera pas. Que fais-je?

Répondre

2

ces deux exportations sont des exportations COM standard, vous devez déterminer quelle interface COM utiliser et les appeler de la manière COM normale (Si vous avez Visual Studio, vous pouvez exécuter l'OLE/COM Object Viewer sur la DLL et regardez sa bibliothèque de types si elle en a une)

+0

--------------------------- OLE/COM Object Viewer ------------- -------------- IMoniker :: BindToObject a échoué sur le nom de fichier créé à partir de ("C: \ Windows \ System32 \ stobject.dll"). Mauvaise extension pour le fichier MK_E_INVALIDEXTENSION ($ 800401E6) --------------------------- OK ------- -------------------- –

+0

--------------------------- OLE/COM Object Viewer --------------------------- Échec de LoadTypeLib (C: \ Windows \ System32 \ stobject.dll). Erreur lors du chargement de la bibliothèque/DLL de type. TYPE_E_CANTLOADLIBRARY ($ 80029C4A) --------------------------- OK ------------ --------------- –

+0

Je ne pouvais pas réaliser comment trouver cette bibliothèque par son nom ou guid. Ouvrir le fichier dans la visionneuse d'objet OLE/COM a jeté les exceptions ci-dessus. Essayer de référencer directement dans un projet Visual Studio a jeté une autre exception. La prime va à qui montre les mesures que je devrais prendre. –

1

J'ai eu un problème similaire. La différence est que je voulais supprimer le fichier de fond d'écran actuel et appliquer le diaporama pour continuer. J'ai compris que sur le fond d'écran changer la clé de registre HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Desktop\General\WallpaperSource. J'ai donc essayé de supprimer le fichier sur lequel il pointe. Et ... En une dizaine de secondes le fond d'écran a été changé! On dirait que cela a forcé le diaporama pour continuer. Donc, voici un fichier batch pour faire l'affaire. Il obtient la valeur actuelle du fichier de papier peint à partir du registre, le renomme avec un nom temporaire, attend 10 secondes et le renomme en original.

@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%" 

Essayez d'augmenter l'intervalle de temps si rien ne se passe.

Questions connexes