Les API windows et c#

otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010 - 13 janv. 2005 à 21:57
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010 - 14 janv. 2005 à 18:35
Bonjour a tous,

Habitue au c++, je debute avec c# et je dois dire que je suis pomme .

J'aimerais utiliser les api windows mais voila, je ne retrouve pas mes bon vieux #include, et je ne sais pas quel espace de nom utilise pour retrouver les constantes utililes a l'utilisation des api (genre windows.h).

La fonction que je cherche a utiliser particulierement est SystemParametersInfo qui utilise les contante type SPI_

J'ai egalement vu que l'on pouvait importer des dll avec DllImport, mais je n'ai pas tout compris.

En bref je suis larguer

en esperant que vous pourrez m'aider

Oto

9 réponses

cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
13 janv. 2005 à 22:24
regarde sur http://pinvoke.net/
en plus tu n'auras même pas besoin de chercher les valeurs SPI_* dans les .h, il y a aussi un enum de fournis quand tu y recherche SystemParametersInfo :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
14 janv. 2005 à 10:00
Génial ce site coq !!! Merci, jvais pouvoir essayer de m'y mettre, a cette API Win32 (qui me fait peur :D )

Au fait, tu voudrais pas nous écrire un tuto, toi qui sais bien t'en servir ? ^^



Mx
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2005 à 10:01
Merci bien pour ce site Coq, il va m'etre super util.

Je comprend deja un peu mieux l'utilisation de DllImport avec leurs exemples.

Vraiment un bon site, encore merci !!

Par contre j'ai toujours un soucis, hehe, je veux utiliser cette fonction (SystemParametersInfo) pour modifier le WallPaper du bureau. Je modifie bien la base de registre, d'ailleur la fenetre des propriete d'affichage me montre bien le wallpaper selectionne, mais le bureau lui n'est pas rafraichi. Si je clique sur Actualiser, il ne change pas non plus de papier peint. Il semble donc qu'il faille signaler que les paremetre utilisateur ont changes, d'ou l'utilisation de la fonction SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "FileName", SPIF_UPDATEINIFILE) (vu sur cppfrance)

Et bien meme avec cette fonction le papier peint reste inchange.

Une idee ?

Oto
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
14 janv. 2005 à 10:07
Regarde si tu trouves pas ce qu'il te faut dans cette source



http://www.csharpfr.com/code.aspx?id=28741



Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6350 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 janv. 2005 à 10:09
Ba le truc c'est que j'apprend au fur et à mesure lol
Et il me reste encore qq points obscurs comme la façon de déterminer qu'une struct à besoin d'une valeur Pack différente de celle par défaut, et aussi comment la déterminer en dehors de "teste des valeurs jusqu'a ce que ça marche" ^^

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2005 à 11:49
Salut Mx,


Je suis alle sur le lien que tu m'as indique mais va savoir pkoi, il m'a renvoyer sur vb.


M'enfin, je ne me suis pas laisse decourage pour autant et j'ai suivi ta piste, en cherchant sur csharp ce qui pouvait avoir un rapport avec les Wallpaper, et j'ai trouve. Il semblerait qu'il faille d'abord copier l'image dans un bitmap et utilise se bitmap pour changer l'arriere plan. J'ai essaye et en effet sa marche...... presque car il me faut encore cliquer sur Actualiser pour que le bureau se reinitialise, mais ya deja du progres, alors merci a tous !!!

Oto
0
cs_gulix Messages postés 25 Date d'inscription lundi 31 mars 2003 Statut Membre Dernière intervention 14 mars 2005
14 janv. 2005 à 13:53
Si tu as suivi le code indiqué par Mx, il s'agit de ma classe
Wallpaper. Pour ton problème de rafraîchissement, cela est peut-être du
à un problème d'Active Desktop. Il me semble que j'ai eu ce problème il
y a quelques temps.

Parce que, sinon, j'arrive à modifier sans rafraîchissement le fond
d'écran sous XP Home et 2000 Pro (pas essayer sous d'autres OS)
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2005 à 14:21
Salut Gulix,

Merci pour tes indications.


J'ai reessayer le lien et en effet cette fois il m'a conduit a ta source (tout a l'heure il m'a a deux reprises redirige sur vb )

Nos codes sont tres proches pour ne pas dire identiques mis a part les noms de variable.

J'ai redemarrer la machine, mais ya pas a faire y veux pas me reactualiser tout seul le fond.

Alors sinon j'ai trouve un autre moyen avec msdn : IActiveDesktop.
et sur http://dynamic-sysop.co.nr/ il donne un exemple d'utilisation avec c#.

Et la pouf mon fond d'ecran s'est rafraichi aussi sec..... mais une seule fois . Apres il ne rafraichissait plus, meme avec Actualiser alors que dans la fenetre des parametres d'affichage, l'arriere plan etait le bon.

Donc je continue mes recherches, hehehe

Oto

PS : travaille sous Win 2000 Pro
0
otofraise Messages postés 66 Date d'inscription vendredi 4 avril 2003 Statut Membre Dernière intervention 4 novembre 2010
14 janv. 2005 à 18:35
Hehehe Gulix, merci !!!

J'ai encore fouille un petit peu et ca y est !! en fait, en plus de modifier le wallpaper, j'ai comme toi ajoute la modification de la couleur de fond. Et maintenant, le bureau est bien reactualise automatiquement.

Encore merci a tous !

Oto
0
Rejoignez-nous