begin process at 2013 05 23 04:32:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimedia

 > CHANGEUR DE FOND D'ÉCRAN

CHANGEUR DE FOND D'ÉCRAN


 Information sur la source

Note :
Aucune note
Catégorie :Multimedia Classé sous :fond ecran, changement, automatique Niveau :Débutant Date de création :20/08/2009 Date de mise à jour :25/08/2009 23:18:23 Vu / téléchargé :5 295 / 491

Auteur : John Dogget

Ecrire un message privé
Commentaire sur cette source (44)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
C'est un petit programme que j'ai écris pour une utilisation perso, il permet :
- de changer de fond d'écran au démarrage de windows, et en fonction d'un timer
- on peut bien sûre choisir la manière dont sera affiché l'image : étiré, mosaïque etc
- on peut voir un aperçu de l'image avant de la mettre en fond d'écran
- le programme surveille le dossier contenant les images pour inclure les nouvelles dans la liste

Source

  • -> Zip
  • Compilé avec Delphi 2007, sous Vista familiale SP2
-> Zip
Compilé avec Delphi 2007, sous Vista familiale SP2

 Conclusion

Pas de bug constaté mais la réduction dans la barre des tâches au démarrage me pose quelques problèmes et ne marche pas tout à fait comme je voudrais.
En faîtes Application.ShowMainForm:=False ne semble pas être pris en compte X_X

Un certains nombre de fonctions ne sont pas de moi, j'en ai indiqué les réferences en commentaires dans le code.

Le programme peut sembler bridé par rapports à certaines fonctions qu'il utilise, c'est un choix perso parce que je n'avais pas besoin de plus de fonctionnalités.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

20 août 2009 19:35:50 :
Nettoyage du zip
20 août 2009 19:40:44 :
Remise à jour du zip (oubli de fichier)
20 août 2009 19:43:05 :
Mise à jour : je poste trop vite et fait n'importe quoi => précision sur la description du programme
23 août 2009 20:19:53 :
Correction du plantage si le dossier ne contient pas d'images
25 août 2009 23:18:24 :
Plus besoin de compo pour le systray, prise en charge de plusieurs format image

 Sources du même auteur

Source avec Zip Source avec une capture ANALYSE DE LA QUALITÉ D'UNE CONNEXION À L'AIDE DU PING
Source avec Zip Source avec une capture LISTE RÉCURSIVE D'UN SERVEUR FTP
Source avec Zip Source avec une capture NETTOYAGE AUTOMATIQUE DE NOMS DE FICHIERS
Source avec Zip Source avec une capture LIBERER DE LA MÉMOIRE POUR FIREFOX
Source avec Zip Source avec une capture JEU DE MORPION

 Sources de la même categorie

Source avec Zip LECTURE DU FORMAT EXIF par piette
Source avec Zip Source avec une capture SYNTHÉTISEUR [BASS] par Nicolas___
Source avec Zip Source avec une capture CLAVIER ARRANGEUR MIDI VIRTUEL par etirex
Source avec Zip Source avec une capture KINECT TEST V2 JOUER DE LA MUSIC AVEC KINECT par FFCAST
Source avec Zip CLASSEMENT DES MP3 par piette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SUDOKU 3X3 AUTOMATIQUE par tim62
Source avec Zip Source avec une capture SUDOKU D'ORDRE 2X2 EN CHIFFRES ROMAINS. par tim62
Source avec Zip SURVEILLER LES ACTIVITÉS D'UN DOSSIER ET DE SES SOUS-DOSSIER... par taye78
Source avec Zip Source avec une capture COMPOSANT : TDBPDEFAULTBUTTON par JulioDelphi
Source avec Zip Source avec une capture SAISIE SEMI-AUTOMATIQUE par max12

Commentaires et avis

Commentaire de Bacterius le 20/08/2009 20:40:05

Il manque :
- TTrayIcon (dans un élan de bonheur j'ai cru qu'il s'agissait de mon composant, de telle façon que j'aurai pu compiler, mais non ^^).
Le fichier .res n'est pas compatible D6 (pas testé D7), mais ça n'entrave pas la compilation.

Une fois après avoir inhibé tout ce qui touchait au TrayIcon, je compile.

---------------------------
Notification d'une exception du débogueur
---------------------------
Le projet AWC.exe a provoqué une classe d'exception EStringListError avec le message 'Indice de liste hors limites (0)'.  Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
---------------------------
OK   Aide  
---------------------------

Ceci est valable pour Delphi 6 (personal) et Delphi 7 (personal) sous Vista.

Je ne vais pas plus loin, j'attends déjà l'unité TTrayIcon.

Cordialement, Bacterius !

Commentaire de John Dogget le 20/08/2009 20:51:48

TrayIcon est un compo standard de Delphi depuis 2006 ...

Pour le EStringListError, c'est parce que le fichier ini qui contient les reglages du programme (AWC.ini) pointent vers un dossier qui n'existe pas chez toi.

Commentaire de Bacterius le 20/08/2009 20:57:48

...
Bon ben tu as deux milles euros à me préter pour que j'achète D2006 ? Ou n'existe-t-il pas un autre moyen pour permettre à cette source d'être accessible aux personnes ne disposant pas du dernier Delphi sorti ?
Pour le EStringListError, ça vient peut-être du fait que je suis sous Vista et que je lui ai pas encore montré qui est le maître et que l'UAC n'en fait qu'à sa tête ... :'<

Cordialement, Bacterius !

Commentaire de John Dogget le 20/08/2009 21:04:08

Non ça viens pas de l'UAC ^^
J'aurais simplement dû inclure dans le code un garde fou pour empecher ce soucis si le dossier n'existes pas.

Et pour les 2000¤, ça va pas être possible !

Cela dit, cette partie du code est vraiment minime et peu être remplacé par un autre compo genre JVCL (qui est très bien aussi) ou même une création "à la main" de l'icône dans la barre des tâches.

Commentaire de Bacterius le 20/08/2009 21:08:03

Oui tu prends Paint et tu dessines l'icône à côté de l'horloge ^^

Cordialement, Bacterius !

Commentaire de cirec le 21/08/2009 10:11:54 administrateur CS

Salut,

@Bacterius:
l'unité que je t'avais filé (TTrayIcon) est compatible avec ce composant ... sauf si John Dogget utilise l'animation pour l'icône du tray !!! je ne l'ai pas implémenté.

sinon et pour la nième fois .... Turbo Delphi est Gratuit et possède ce composant et bien d'autres encore :D

Commentaire de cirec le 21/08/2009 10:51:07 administrateur CS

@John Dogget:

vu que tu dev sous D2006 je te conseille d'ajouter ceci dans le OnCreate de ta fiche principale :
  ReportMemoryLeaksOnShutDown := True;
au moins pendant la phase de testes ;)
ça te permettra déjà de voir que tu as des fuites de mémoires ... ;)

Commentaire de Bacterius le 21/08/2009 12:51:23

Turbo Delphi a beau être gratuit, je ne parviens pas à l'installer. Le téléchargement c'est OK, mais l'installation foire pour je ne sais quelle odieuse raison ...

Cordialement, Bacterius !

Commentaire de cirec le 21/08/2009 13:05:59 administrateur CS

il faut installer les pré-requis avant ... j'avais bien dit de télécharger la version ISO ... c'est la seule qui soit complète.

après si c'est sous Vista ... me semble qu'il y a une manip à faire pour installer le FrameWork :D
mais développer sous Vista ... y a comme un non sens ... :-#

Commentaire de Bacterius le 21/08/2009 13:24:26

Ce n'est qu'un passage ... l'ordinateur était fourni avec Vista, mais j'peux passer à Windows 7 avec la promotion :)
De plus, Vista a des combinaisons de touche tellement farfelues que j'arrive à coincer le clavier en tapant trop vite :>(

Cordialement, Bacterius !

Commentaire de Bacterius le 21/08/2009 13:53:38

Sinon petite amélioration : Au démarrage du logiciel, si aucune préférence n'a été mise à jour, permettre à l'utilisateur de choisir son dossier images ? (chez moi "D:\Images" pointe sur mon DD externe qui ne contient pas ce genre de données). Je vais changer à la main pour tester :)

Cordialement, Bacterius !

Commentaire de Bacterius le 21/08/2009 14:06:05

Il y a un truc qui déconne sur Vista là ... je change le fichier AWC.ini pour définir mon dossier d'images ("C:\Utilisateurs\Thomas\Images\"). J'ai pris quatre ou cinq images de chaton sur la toile pour tester. Et je reçois quand même l'erreur de dépassement de bornes ... Je sais pas d'où ça vient mais c'est bizarre ...

Cordialement, Bacterius !

Commentaire de John Dogget le 21/08/2009 15:49:53

Je vais creuser cette histoire d'erreur au lancement.
Sinon, j'ai oublié de préciser que par defaut, il faut des images en jpg et rien d'autre, c'est une des limitations dont je parlais dans la présentation du code.

Je pense faire une MAJ dans le week-end pour arranger tout ça.

Commentaire de cantador le 23/08/2009 11:59:21 administrateur CS

ouaff...embêtant tout ça..
peut-être faire une compilation évenementielle ?
si D6->>> Bacterius
si D7->>> beaucoup de monde
si > D7 ->>>
si XP->>>
si Vista->>>

etc.

Commentaire de Bacterius le 23/08/2009 13:24:31

@Cantador : j'ai D7 aussi ;)

Cordialement, Bacterius !

Commentaire de cantador le 23/08/2009 15:33:24 administrateur CS

moi aussi..

Commentaire de Bacterius le 23/08/2009 15:39:34

Chose bizarre, j'utilise plus Delphi 6 que D7, car sur Delphi 6, quand on passe le curseur par-dessus une variable/constante/n'importe-quoi sur le code, une bulle d'aide s'affiche qui donne l'unité dans laquelle cet objet est déclaré, les paramètres si c'est une fonction/procédure, le type ... chose absente dans Delphi 7 ... mais peut-être qu'un réglage des options ??

Cordialement, Bacterius !

Commentaire de Bacterius le 23/08/2009 15:40:35

Et de plus, sur D7, le style XPMan (ou le fichier windowsxp.res) donne des résultats pour le moins étranges ...

Cordialement, Bacterius !

Commentaire de cantador le 23/08/2009 18:31:50 administrateur CS

une bulle d'aide s'affiche qui donne l'unité dans laquelle cet objet est déclaré, les paramètres si c'est une fonction/procédure, le type ... chose absente dans
Delphi 7 ...

cela fonctionne aussi sous D7..

qui est certainement une des version de delphi la plus stable.
D2009 semble être encore plus rapide et possède des fonctions avancées supplémentaires..

bon va falloir que l'on casse la tirelire..

cantador

Commentaire de Bacterius le 23/08/2009 18:34:28

Bon pour la bulle d'aide, peut-être aie-je mal configuré les options. Mais le thème de windows xp avec D7 personal ? Chez moi, si j'utilise XPMan, ça marche 1 fois sur 2, et avec le fichier ressources directement, ça ne marche point du tout ...
Enfin ici c'est les commentaires pour la source "Changeur de fond d'écran", stop.

Cordialement, Bacterius !

Commentaire de cantador le 23/08/2009 19:28:48 administrateur CS

ben chez moi, j'ai tellement de plantages que finalement le fond d'écran je le change à la main..
au boulot John Dogget !

Commentaire de John Dogget le 23/08/2009 19:52:21

C"est prévu ...
Par contre cantador, je veux bien croîre que tu ais des plantages, mais si tu me dis pas lesquels, je vais pas le deviner.

Commentaire de John Dogget le 23/08/2009 20:23:05

J'ai fais une petite mise à jour qui devrait résoudre le EStringListError.
Par contre, j'ai toujours des ennuis avec la réduction au démarrage qui semble vraiment se comporter de manière aléatoire.

Par ailleurs Foxy m'a contacté en me disant qu'il avait fait une grosse modif du code sans donner plus de précisions.
Il ne m'as rien envoyé pour l'instant, peut être qu'il a trouvé une solution.

Commentaire de cantador le 23/08/2009 21:05:28 administrateur CS

f0xi, reposé et bronzé ça va faire mal..

Commentaire de cantador le 23/08/2009 21:23:03 administrateur CS

désolé John Dogget, j'ai répondu un peu vite..
en fait, j'ai les mêmes soucis signalés par Bacterius mais
dès que pour une source, il faut faire ci il faut ça..
ça m'ennuie un peu..
Pour ma part, un programme déposé doit fonctionner ou alors il faut vraiment bien préciser le contexte dans lequel celui-ci doit tourner.

Commentaire de John Dogget le 23/08/2009 21:52:17

Tu rencontres les mêmes soucis avec la dernière version ?

Commentaire de cantador le 23/08/2009 23:12:21 administrateur CS

je viens de tester à nouveau.
sous D7, le trayIcon n'est pas reconnu.

Commentaire de Bacterius le 23/08/2009 23:18:27

Oui c'est normal Cantador, c'est un bijou que nous, pauvres individus ne possèdant qu'une version de Delphi à un chiffre, ne sommes en mesure d'apprécier.
Tout ça pour dire que c'est la TrayIcon de Delphi 2006 à ce que j'ai cru comprendre ... je pense que si tu inhibes tout ce qui touche à la TrayIcon ça devrait fonctionner à peu près normalement.

Cordialement, Bacterius !

Commentaire de cantador le 24/08/2009 10:03:20 administrateur CS

j'aime pas inhiber des trucs mais ça marche..
reste le souci du format des images..dès que le choix tombe sur un .bmp paf ça plante..
ce souci doit pouvoir se régler rapidement..
il faut donc une version réglant ce problème +
une compilation qui tienne compte de la version de delphi
(av D7 et ap D7)

Commentaire de John Dogget le 24/08/2009 17:37:23

Pour les bmp, je peux arranger ça.
Pour le TTrayIcon il faut que je recode à la main toute la partie qui correspond, c'est un peu plus délicat.

Commentaire de Bacterius le 24/08/2009 17:39:01

Tu peux pas simplement utiliser un composant qui existe déjà sur le site pour le TTrayIcon ? Pas grand chose à changer si ce n'est le nom des propriétés, etc ...

Cordialement, Bacterius !

Commentaire de John Dogget le 24/08/2009 17:52:35

Je pense que je vais utiliser la JVCL.

Commentaire de Bacterius le 24/08/2009 17:54:15

Arghh ! Tu peux pas t'en empêcher hein ...

Cordialement, Bacterius !

Commentaire de John Dogget le 24/08/2009 17:58:38

Non ^^
Ca marche très bien et je vais surement pas me retaper des tonnes de code alors que d'autre le font mieux que moi

Commentaire de Bacterius le 24/08/2009 18:02:30

Ok ben ça sera donc sans moi :/
Pourquoi ne pas utiliser mon composant TTrayIcon ? Il convient parfaitement à ce que tu cherches à faire ... et les propriétés sont Title, Active, PopupMenu, Icon, et tu peux appeller une bulle d'aide avec BalloonHint ...

Cordialement, Bacterius !

Commentaire de John Dogget le 24/08/2009 18:07:44

Comme avec la JVCL qui est beaucoup plus repandu que ton compo en fait.

Et puis je bataille en partie à cause de toi (vu que comme dab ici les autres ont l'air de s'en cogner), donc si tu me dis "sans moi", je sens que je vais garder les MAJ pour moi et aller voir ailleurs si j'y suis.

Je veux bien des efforts, mais ça reste open-source, donc voila.

Commentaire de Bacterius le 24/08/2009 18:13:35

Tu mets le problème à l'envers là. Pour le confort des gens, il est, je sais pas, logique de permettre une compilation aisée. Déjà, si il faut télécharger un pack de 20 Mo pour un seul composant ... après rien ne t'empeche de faire une version "pour toi", avec la JVCL, offrant + de possibilités, puis une version "CS", n'utilisant que des compos facilement récupérables.
Enfin bon, moi je peux pas installer la JVCL parce que ça marche pas, que veux-tu. Il y a sûrement un moyen, mais me débattre pour un composant dont j'ai déjà codé mon propre compo qui fait presque pareil, c'est frustrant quoi ...

"à cause de toi" => excuse-moi d'essayer de compiler hein ...

Enfin bon, restons dans l'amiable o0"

Cordialement, Bacterius !

Commentaire de John Dogget le 24/08/2009 19:46:13

@ cantador
Tu dis que ça tombe que ça tombe sur un BMP, ça plante.
Mais ça plante à quel moment exactement parce que d'après le code, le programme n'est pas censé voir les fichiers en bmp !
Ou alors, c'est au moment de mettre un BMP en fond d'écran que ça plante ?

Comprend po !

Commentaire de Bacterius le 24/08/2009 19:56:28

"le programme n'est pas censé voir les fichiers en bmp"
C'est quand même un comble pour le fichier image natif de Windows :]
Peut-être un support Bmp/Jpeg serait intéressant, particulièrement pour ceux dont la qualité des JPEG pique les yeux ...

Cordialement, Bacterius !

Commentaire de John Dogget le 24/08/2009 20:10:41

T'inquietes ^^

La partie qui doit mettre une image en fond d'écran devrait normalement accepter n'importe quel format image pris en charge par windows, dixit japee l'auteur de cette fonction :p

Non c'est juste le listage des fichiers qui ne doit voir que les fichiers jpg.

C'est pour cette raison que j'aimerais bien que cantador me dise ce qui va pas.

Commentaire de cantador le 24/08/2009 22:23:14 administrateur CS

Toujours la même chose..
et si on choisit un dossier ne contenant pas de fichier à extension d'image valide-->>plantage
ce qui pourrait être eviter avec un Try Except End
pour les autres extensions, il faut soit convertir, soit tester.
et la fonction de notre cher japee fonctionne avec un fichier .bmp :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
uses ShlObj, ComObj, Jpeg;

procedure ApplyWallPaper(const FileName: string; wpStyle: DWORD = WPSTYLE_CENTER);
const
  GUID: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
var
  ComObj       : IUnknown;
  Buffer       : PWideChar;
  WallPaperOpt : TWallPaperOpt;
begin
  if not FileExists(FileName) then Exit;
  Buffer := AllocMem(MAX_PATH);
  StringToWideChar(FileName, Buffer, MAX_PATH);
  WallPaperOpt.dwStyle := wpStyle;
  WallPaperOpt.dwSize := SizeOf(WallPaperOpt);
  ComObj := CreateComObject(GUID);
  with ComObj as IActiveDesktop do
  begin
    SetWallpaperOptions(WallPaperOpt, 0);
    SetWallpaper(Buffer, 0);
    ApplyChanges(AD_APPLY_ALL); //(AD_APPLY_ALL or AD_APPLY_FORCE);
  end;
  FreeMem(Buffer);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
ApplyWallPaper('c:\essai\Aquarium.bmp',0);
end;

end.

Commentaire de John Dogget le 24/08/2009 22:30:18

Bien ...

La prise en charge de plusieurs format c'est bon, je viens de finir et ça marche (très) bien, l'application voit et liste tous les fichiers images.
Pour l'instant j'ai mis les BMP, GIF et JPG mais on peut facilement en rajouter.
D'ailleurs je suis assez fier de moi pour la fonction qui liste tout ça (huhu ^^).

Le try..except, c'est facile donc on va dire que c'est bon.

La je suis sur la création d'une TrayIcon avec les API.

J'avance bien, ptete une MAJ ce soir, sinon demain.

Commentaire de John Dogget le 25/08/2009 23:21:05

Mise a jour !

Le bug de la liste vide est en principe corrigé, je dis en principe parce qu'en fait je suis pas arrivé à le reproduire ^^

Le TrayIcon est codé "en dur" dans l'appli, c'etait moins compliqué que je ne pensais.

Par contre, le démarrage en mode reduit réagit toujours bizaremment ...

Commentaire de danfranjo le 26/08/2009 21:30:11

Bonjour John Dogget,
Je viens de tester ton appli,et j'ai un petit commentaire :
J'ai un système à 2 moniteurs,avec extension du desktop sur le 2ème ce qui fait que tous tes écrans sont à cheval sur les 2 moniteurs.
Pour corriger, il faut mettre les positions des écrans à poScreenCenter au lieu de poDesktopCenter.
D'autre part, est-il possible de mettre une image différente sur le 2ème moniteur ?
Sinon, l'appli marche bien.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

incrémentation automatique (Paradox) [ par lirva ] Bonjour,Je voudrais récupérer la dernière valeur de l'enregistrement d'un champ à incrémentation automatique sous Paradox.Y'a-t-il une variable global telechargement automatique fichier [ par sherka66 ] je veux essayer de faire un petit prog mais avant de me casser la tête je veux juste savoir si ça vous semble faisable sans y passer 1 an ! je veux ju Changement de caracteres dans une appli console. [ par Kundun2 ] Bonjour,Je voudrais savoir si il est possible d'executer une fonction de verification pendant l'ecriture dans une appli console ?Je m'explique :Quant autorun d'un CD et exécution automatique depuis flash [ par alaintroll ] Je suis en train de réaliser un cd publicitaire, je voudrais créer un auto run, comment est ce que je dois m'y prendre.Je compte réaliser ce CD avec F recuperer un chemin de maniere automatique, [ par rober ] Roberje cherche une astuce pour pouvoir declarer dans une chaine le chemin du repertoire ou se trouve l'exe de l'application que je lance.merci de vot Effacer l'historique de saisie semi-automatique d'Internet explorer [ par fgreg306 ] Je souhaite incorporer dans mon application Delphi, une fonction de purge de l'historique de saisie semi-automatique des Formulaires et des mots de pa SaveDialog - empecher le changement de rep [ par chups82 ] Bonjour,Lorsque j'ouvre ma boîte de dialogue SaveDialog, je mets un répertoire par défaut. Je souhaiterai que l'utilisateur ne puisse pas changer ce r Comment générer un fichier .txt automatique ( qu'elle commande utiliser) [ par stigmate101 ] Salut Je doit automatiser la creation de fichier .txt dans une application.Je n'ai pas trouvé de commande à ce sujet ?Quelqu'un peut-il me débloquer.a DBGrid : selection automatique d'une ligne [ par trigoutte ] Sous delphi7, est-il possible de sélectionner une ligne dans un DBGrid. Je n'arrive pas à trouver un truc du genre: dbgrid.dataset[5].select<i remplissage automatique de formulaire web [ par thone08 ] Bonjour j'aurai voulu savoir comment faire pour remplir des formulaire web de facon automatique soit par un webrowser ou par internet explorer ;) merc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2013
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales