Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Utiliser SetWallpaper [ Windows / Autre ] (ndubien)

jeudi 1 novembre 2007 à 16:27:41 | Utiliser SetWallpaper

ndubien

Membre Club

Bonjour,

Je n'arrive pas à utiliser SetWallpaper dans mon projet,

/* cf. http://msdn2.microsoft.com/en-us/library/bb776362.aspx
cf. http://msdn2.microsoft.com/en-us/library/bb776357.aspx */

lorsque j'utilise cette fonction avec DEV-C++ et que je compile le projet, DEV-C++ me dit:
[Linker error] undefined reference to `SetWallpaper'

Que faut-il que j'ajoute à mon projet pour que SetWallpaper fonctionne?
Sachant que j'ai déjà mis:
#include <shlobj.h>

Merci d'avance et à bientôt...


Nico


jeudi 1 novembre 2007 à 17:13:23 | Re : Utiliser SetWallpaper

juju12

Essaie d'inclure wininet.h avant shlobj.h, je vois pas trop le rapport mais apparemment il en a besoin (j'ai essayé de compiler avec et sans, ca marche seulement s'il est inclus).

jeudi 1 novembre 2007 à 17:35:31 | Re : Utiliser SetWallpaper

ndubien

Membre Club

Salut juju12,
et bien mon problème c'est que j'ai déjà essayé avec WinInet.h et ça n'a pas marché pour autant....
Lorsque vous dites "j'ai essayé de compiler avec et sans, ca marche seulement s'il est inclus", avec quel compilateur avez-vous essayé? DEV-C++?
Car avec moi ça ne veut pas marcher!
A+


jeudi 1 novembre 2007 à 20:18:23 | Re : Utiliser SetWallpaper

juju12

Non c'était avec VS2005; j'ai essayé de voir s'il fallait une lib spéciale mais le SDK est muet là-dessus; ce qui est bizarre aussi c'est que j'ai référencé kernel32.lib seulement et ca compilait, enfin je vais encore fouiller un peu...

jeudi 1 novembre 2007 à 20:22:41 | Re : Utiliser SetWallpaper

Neo_Fr

Membre Club
Ta linker avec shell32.lib? Neo_Fr

jeudi 1 novembre 2007 à 21:03:34 | Re : Utiliser SetWallpaper

ndubien

Membre Club

Avec DEV-C++, ça ne marche ni avec kernel32.lib ni avec shell32.lib...
Encore merci pour votre aide.


jeudi 1 novembre 2007 à 21:05:14 | Re : Utiliser SetWallpaper

Neo_Fr

Membre Club
Comment ca marche pas? Tu pourrais nous poster ton code stp? Neo_Fr

jeudi 1 novembre 2007 à 22:51:07 | Re : Utiliser SetWallpaper

ndubien

Membre Club

Et bien voici le code sur lequel j'essai d'utiliser SetWallpaper:
#include <windows.h>
#include <wininet.h>
#include <shlobj.h>

int main() {
    SetWallpaper("a.bmp",0);
    return 0;
}

Il s'agit commme vous pouvez le voir du code le plus simple possible:
les #pragma ne sont pas mis dans le code car DEV-C++ ne sait pas s'en servir tel quel,
il lui les faut dans les options du projet (ce qui est fait dans mon projet):
lib/libshell32.a
lib/libkernel32.a

Pour information, j'ai essayé de compiler ce code en C et en C++ (API Win32) mais dans les 2 cas, le même message d'erreur apparaît:
[Linker error] undefined reference to `SetWallpaper'
A+, j'espère vous avoir renseigné suffisement...


vendredi 2 novembre 2007 à 01:35:12 | Re : Utiliser SetWallpaper

Neo_Fr

Membre Club
#define _WIN32_WINNT 0x0501 #define _WIN32_IE 0x0501 #include #include #include int __stdcall SetWallPaper(char* FilePath, BYTE bCenter) { IActiveDesktop* paDesktop; WALLPAPEROPT wpOpt; WCHAR wFilePath[MAX_PATH+4]; if(!FilePath) return 1; CoInitialize(0); ZeroMemory(&wpOpt, sizeof(WALLPAPEROPT)); if((CoCreateInstance(&CLSID_ActiveDesktop, 0, CLSCTX_INPROC_SERVER, &IID_IActiveDesktop, (LPVOID*)&paDesktop)) != S_OK) return 1; MultiByteToWideChar(CP_ACP, 0, FilePath, -1, wFilePath, MAX_PATH); paDesktop->lpVtbl->SetWallpaper(paDesktop, wFilePath, 0); wpOpt.dwSize = sizeof(WALLPAPEROPT); if(bCenter) { wpOpt.dwStyle = WPSTYLE_CENTER; }else wpOpt.dwStyle=WPSTYLE_STRETCH ; paDesktop->lpVtbl->SetWallpaperOptions(paDesktop, &wpOpt,0); paDesktop->lpVtbl->ApplyChanges(paDesktop, AD_APPLY_ALL); paDesktop->lpVtbl->Release(paDesktop); CoUninitialize(); return 0; } #pragma comment(linker, "/entry:_WinMain") int WINAPI _WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { if(SetWallPaper("C:\\test.jpg", 0)) MessageBox(0, "error", 0, 0); return 0; } En C, compiler avec VS sa marche nikel Pour DevCpp, Essaye de mettre a jour les headers on sait jamais: http://www.mingw.org/ Neo_Fr

vendredi 2 novembre 2007 à 09:09:59 | Re : Utiliser SetWallpaper

mogwai93


MingW ne reconnait pas IActiveDesktop, ni CLSID_ActiveDesktop, ni IID_IActiveDesktop

je ne sais pas si ça peut aider ndubien :
il y a bien ce lien qui parlait de ce probleme :
[ Lien ]

mais en testant je tombe sur :

undefined reference to `IID_IActiveDesktop'
undefined reference to `CLSID_ActiveDesktop'

mais apres ??? pb d'edition de liens ? (mais comme on a redefini  IActiveDesktop et ses "copains"...



1 2 3

Cette discussion est classé dans : projet, utiliser, http, setwallpaper, msdn2


Répondre à ce message

Sujets en rapport avec ce message

je recherche un ou plusieur programmeurs et autres [ par Mikonos ] nous somme une petite equipe pour l'instant ou nous avons pour projet de creer un mod multijoueur avec le moteur de quakeil y a deja- 4 mappeurs - 3 m MySQL++ sur Builder C++ 6.0 [ par Erzak ] Bon le probleme est le suivant:je doit gerer une base de donnes par un programme en C++.Le programme est devellopper sur builder C++ 6.0, sous windows Peut-on utiliser un Activex en VC++ sans MFC? [ par racpp ] Salut tout le monde,Je sais comment ajouter et manipuler un controle Activex dans un projet VC++ MFC. Mais je cherche un moyen pour faire la même cho je veux utiliser une dll dans un projet vc++ sachant que je ne dispose que du .dll et du .h mais pas de .lib [ par bissbiss ] j'ai envis d'utilser pqsql.dll qui est une ddl pour gerer une connexion avec une base de données postgresql. comment faire?? Besoin de programmeurs Cpp [ par Elfyke ] Nous recherchons des programmeurs cpp pour le développement d'un jeux de role en 3D...le scénario est déjà bien avancé !Notre équipe est composée de aider moi [ par amoula1982 ] AIdez moi a faire mon programme en C  <TD id=HB_Focus_Element vAlign=top wid Communication avec un serveur apache en c++ [ par naycos ] Bonjour,je souhaite ecrire un programme en c++ (avec Visual Studio 6), pour windows XP, qui va travailler avec un serveur apache basé sur une mandriva utiliser un dll non .net dans un projet VS C++ 2005 [ par dodz ] Salut,au fait j'ai un probleme lié à l'utilisation d'un dll non .Net dans un projet de Visual Studio  C++ 2005.J'ai reçu un .h et le dll ainsi que le Problème iostream [ par bricecol ] Bonjour,Je tente d'utiliser la librairie "Allegro" en C afin de créer un petit jeu.La "mise en place" d'Allegro s'est bien passé, càd que lorsque je l


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.