IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Notifications de l'arrivée de nouveaux fichiers dans une arborescence de dossiers


Sujet :

Windows Forms

  1. #1
    Invité
    Invité(e)
    Par défaut Notifications de l'arrivée de nouveaux fichiers dans une arborescence de dossiers
    Bonjour,
    J'ai beau chercher partout sur internet et sur developpez.com je ne trouve pas de réponse à ce que je cherche alors je créer un post.
    Je suis actuellement en première année de bts ig donc je débute dans la programmation.
    J'ai un projet de développement à effectuer pour mon entreprise mais je ne sais pas où commencer.
    Je n'ai que des bases dans le langage C voir C++.
    Je possède l'outil de développement Visual Studio 2008 et passera à la version 2010 quand elle sera sortie officiellement mais je ne sais pas du tout m'en servir.

    Mon projet, une application de notifications.
    Cette application doit notifier l'arrivée de nouveaux fichiers dans une arborescence de dossiers. Ce logiciel doit effectuer cette opération toutes les minutes. Si un nouveau fichier est trouvé, une fenêtre pop-up doit s'afficher à l'écran avec un message que je définirai et un bouton OK où quand on clic dessus il nous emmène dans le dossier où se trouve le fichier. Si aucun fichier n'est trouvé rien ne se passe. Par contre tant que le fichier est présent, la fenêtre de notification doit réapparaître si l'utilisateur à cliquer sur OK ou doit resté affiché à l'écran si personne n'a cliqué sur OK.
    Ensuite il faudrait que ce logiciel soit lancé tout seul au démarrage de Windows. Je pensais le déclarer en tant que Services Windows. Merci de m'éclairer aussi sur ce point.

    J'espère que vous pourrez m'aider car je suis en grande galère !
    Merci d'avance.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    Si tu as besoin d'une application qui "tourne" sans utilisateur connecté, un service est un bon point de départ.

    Pour surveiller un répertoire, DotNet propose la classe FileSystemWatcher qui permet de connaiître toutes les modifications d'un répertoire : ajout/suppresion/modification... cela te sera sûrement très utile.

    Concernant l'IHM, c'est un peu plus compliqué ; si tu utilises un service, il n'est pas judicieux d'afficher une forme car par définition, il n'y aura pas forcément d'utilisateur loggé à ce moment. Si tu parles de fenêtre de notification, tu ne peux imposer un clic sur un button OK. Une notification doit se contenter de "Notifier" ; peu être avec une infobulle (NotifyIcon)


    Bon courage,

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci cybermaxs pour ta réponse.
    Je sais maintenant quelle fonction utiliser. Je vais regarder sur internet comment m'en servir ou si tu connais un lien je suis preneur. Saurais-tu quel langage serait le mieu approprié pour un débutant ? VB, C++, C# ?
    Concernant l'IHM je ne comprens pas trop le problème d'utilisateur loggé. Pourrais-tu m'expliquer ?
    Je parle en effet qu'à la détection d'un nouveau fichier, une fenêtre de notification s'affiche en disant par exemple "Un nouveau fichier Exemple.docx à été trouvé" avec en bouton OK en desous pour ouvrir le dossier dans lequel se trouve le fichier.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Pour le FileSystemWatcher, je vais faire simple : un lien MSDN.

    Coté langage, même si il n'y a pas de grandes différences, je répondrais le C# sans hésiter. Dans l'environnement .Net c'est de loin le plus utilisé. A l'origine c'était assez proche de C++.

    Pour l'IHM. Il faut savoir qu'un service démarrage au démarrage du poste et pas à l'ouverture de session, c'est à dire que ton service peut tourner sans utilisateur loggé. D'un autre point de vue, il est définit comme convention de ne pas mettre d'IHM dans un service. Un service est plutôt là pour faire du traitement en arrière plan (synchronisation, mise à jour, ...) est ce finalement un service dont tu as besoin ou juste une application lancée lorsqu'un utilisateur est loggé ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour le lien (je regardais déjà là !).
    Merci pour le conseil de langage je vais y réfléchir.
    Je pense alors que ce serait plus une application dont j'aurais besoin mais il faudrait que celle-ci tourne en quelque sorte "en tache de fond" et qu'elle soit lancée automatique au démarrage de session alors.

  6. #6
    Invité
    Invité(e)
    Par défaut
    J'aurais besoin d'un petit peu d'aide pour débuter !
    Comment commencer ? Je voudrais savoir la marche à suivre pour créer mon projet et ou écrire mon code ?
    Dans visual studio je fait Fichier > Nouveau > Projet > Visual C# > Application Windows Forms > Ok.
    Ensuite mon projet s'ouvre comme ceci:

    Après je ne sais pas où écrire mon code. Donc dans quel fichier et à quel endroit vu que le fichier contient déjà du code !
    Je pense tout de même qu'il faut écrire dans Program.cs mais après quand je l'ouvre j'obtiens ça:

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    j'ai présumer de ton niveau...
    Je t'ai donné quelques conseils pour ton architecture. Je te conseille vivement, avant de commercer par la méthode brute-force, de te former un minimum sur les bases de DotNet, sinon tu va osciller entre les problèmes. Je te suggère de commencer par ce lien.

    Bon courage,

  8. #8
    Invité
    Invité(e)
    Par défaut
    ^^ tu n'aurais pas du !
    J'ai bien dis que je possédais VS mais je ne m'en suis encore jamais servi !
    En ce moment j'utilise CodeBlocks pour développer du C que j'apprend à l'école.
    Merci pour le bon courage, à mon avis j'en aurai besoin !

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Citation Envoyé par Oliver-05 Voir le message
    ^^ tu n'aurais pas du !
    J'ai bien dis que je possédais VS mais je ne m'en suis encore jamais servi !
    En ce moment j'utilise CodeBlocks pour développer du C que j'apprend à l'école.
    Merci pour le bon courage, à mon avis j'en aurai besoin !
    Moi aussi, j'ai fait du C à l'école et je m'en suis sorti
    C'est très bien pour apprendre les bases des algorithmes.

    Mais les applis professionnelles sont rarement des applis console. L'apprentissage de la programmation graphique est une étape supplémentaire de la formation. Celle de DotNet en est une autre. Tu progresseras avec le temps.Comme tout bon développeur, tu pourras réécrire ton code actuel 2 fois mieux dans six mois ...

  10. #10
    Invité
    Invité(e)
    Par défaut
    J'espère que ce que tu dis est vrai car je me vois mal parti. Mais bon c'est bien connu on est jamais content de ce que l'on fait !
    J'espère que j'apprend de la bonne manière de façon à devenir un vrai pro dans le futur ... On a le droit de rêver !

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Citation Envoyé par Oliver-05 Voir le message
    J'espère que ce que tu dis est vrai car je me vois mal parti. Mais bon c'est bien connu on est jamais content de ce que l'on fait !
    J'espère que j'apprend de la bonne manière de façon à devenir un vrai pro dans le futur ... On a le droit de rêver !
    Bonne motivation, c'est bien !
    Le secret c'est la pratique. Plus tu pratiqueras, plus tu verras d'exemples de code, plus tu liras d'articles, meilleurs tu seras (parole de Yoda).

  12. #12
    Invité
    Invité(e)
    Par défaut
    Ben le problème c'est que je ne pratique pas trop en dehors de l'école car j'ai du mal sur certain point surtout en algo qui je trouve ne sert à rien ! Moi j'veux du code c'est tout
    Sinon concernant la leçon de C# j'en suis à la 10e page je vais m'y mettre toute la journée. Je prends des notes en même temps de ce que je trouve important (méthodes et syntaxes)

  13. #13
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut
    Moi j'veux du code c'est tou
    si tu veux du code tout fait, tu peux t'en aller directement parqu'ici on ne fait pas le travail des autres (c'est marqué dans les règles du forum)

    le C# c'est pas dur et surtout, c'est super sympa quand on le maitrise mais ca demande du boulot personnel avant tout même sans être un dieu de l'algo t'es largement compétent pour faire ce que tu souhaites faire

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Louis-Guillaume Morand Voir le message
    si tu veux du code, tu peux t'en aller directement parqu'ici on ne fait pas le travail des autres

    le C# c'est pas dur et pire, c'est super sympa quand on le maitrise mais ca demande du boulot personnel avant tout
    Tu n'as pas bien compris ce que je voulais dire !
    Ce que j'entendais par je veux du code c'est que en contrôle on nous demande que de l'algo mais moi j'aime pas l'algo je préfère le code c'est dans ce sens là que ma phrase était tournée !

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bon je viens vous informer un peu ! Et surtout chercher de l'aide !
    Je continu à apprendre avec le lien que tu m'as donné cybermaxs mais quelque chose n'est pas très clair à mes yeux. Je ne comprend pas trop une syntaxe.
    Voici un exemple tiré du document:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    using System;
    2.
    3. namespace Chap1 {
    4. class P05 {
    5. static void Main(string[] args) {
    6. string chaine1="chat", chaine2="chien";
    7. int n = chaine1.CompareTo(chaine2);
    8. bool egal = chaine1.Equals(chaine2);
    9. Console.WriteLine("i={0}, egal={1}", n, egal);
    10. Console.WriteLine("chien==chaine1:{0},chien!=chaine2:{1}", "chien"==chaine1,"chien" !=chaine2);
    11. }
    12. }
    13. }
    Au début je ne comprenais pas bien que signifiait les {0} et {1} mais la j'ai cru comprendre que {0} est pour l'entrée et {1} pour la sortie ?
    mais après je ne comprend pas la syntaxe de la ligne 10.
    Ne me demandez pas qu'est ce que je ne comprend pas dans cette ligne c'est toute la notation que je ne comprend pas !
    Et d'où viens i dans la ligne 9 ? i se référence à n donc si je comprend on aurait très bien pu prendre y ou z mais pourquoi ne pas prendre n ? est-possible ?
    Si quelqu'un pouvait m'expliquer.
    Merci d'avance.

  16. #16
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 253
    Points
    28 253
    Par défaut
    nan, {0} c'est le premier emplacement, {1} le deuxiement

    là, ca va remplacer {0} par la valeur de n et {1} par la valeur de egal


    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("Bonjour {0}", "louis"+"guillaume");
    =>
    Bonjour louisguillaume


    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("Bonjour {0}-{1}", "louis", "guillaume")
    Bonjour louis-guillaume


    et dans ton deuxieme exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("chien==chaine1:{0},chien!=chaine2:{1}", "chien"==chaine1,"chien" !=chaine2);
    ca remplacera {0} par true ou false, pareil pour {1}


    ps: tu devrais p-e t'attaquer à la lecture d'un bon livre sur le C#. il te manque des bases et meme si tu connais bien c'est toujours bon de relire un livre, ca fortifie ces bases

  17. #17
    Invité
    Invité(e)
    Par défaut
    quelque chose me fait rire dans ce que tu marques !
    il te manque des bases et meme si tu connais bien
    justement je ne connais rien de ce langage !! j'apprend justement maintenant avec le lien que m'a passé cybermaxs !
    Donc {0} et {1} seront remplacé par true ou false mais je ne vois toujours pas l'intérêt surtout dans ton exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("Bonjour {0}", "louis"+"guillaume");
    si {0} est true ou false ou s'applique-t-il ?
    si {0} était false on aurait pas eu d'affichage et si c'était true on a justement Bonjour louisguillaume ?
    est ce qu'on pourrait mettre tout simplement çà ? (simple question pour voir si j'apprend bien ma leçon !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("Bonjour Louis-Guillaume");
    si tu pouvais m'expliquer plus dans les détails vu mon niveau de débutant ... !

  18. #18
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Citation Envoyé par Oliver-05 Voir le message
    quelque chose me fait rire dans ce que tu marques !

    justement je ne connais rien de ce langage !! j'apprend justement maintenant avec le lien que m'a passé cybermaxs !
    Donc {0} et {1} seront remplacé par true ou false mais je ne vois toujours pas l'intérêt surtout dans ton exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String.Format("Bonjour {0}", "louis"+"guillaume");
    si {0} est true ou false ou s'applique-t-il ?
    si {0} était false on aurait pas eu d'affichage et si c'était true on a justement Bonjour louisguillaume ?
    est ce qu'on pourrait mettre tout simplement çà ? (simple question pour voir si j'apprend bien ma leçon !)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Console.WriteLine("Bonjour Louis-Guillaume");
    si tu pouvais m'expliquer plus dans les détails vu mon niveau de débutant ... !
    Oui en effet l'exemple est limite mais bon c'est un exemple... En général on passe dans les arguments du string.format, des variables qui ne sont pas chaînes en dur. L'intérêt c'est qu'on peut aussi mettre d'autres types comme des int, décimaux, ...

  19. #19
    Invité
    Invité(e)
    Par défaut
    Ok, bon déjà un truc que j'ai bien appri !
    Et pour les {0} et {1} tu pourrais m'en dire plus ?

  20. #20
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Citation Envoyé par Oliver-05 Voir le message
    Ok, bon déjà un truc que j'ai bien appri !
    Et pour les {0} et {1} tu pourrais m'en dire plus ?
    C'est à dire ?
    La seule contrainte c'est qu'il faut avoir autant de {n} que d'arguments.
    Tu peux aussi ajouter des spécifiés au formattage du texte, qui par défaut fait un simple ToString().
    Par exemple, si tu veux afficher une valeur monétaire tu feras {0:C}. Il y a une liste longue comme mon bras de possibilités (lien)

Discussions similaires

  1. Problème lecture fichier dans une arborescence de dossiers
    Par africanwinners dans le forum Langage
    Réponses: 5
    Dernier message: 05/12/2014, 12h59
  2. [batch file] detruire des fichiers dans une arborescence
    Par Biosox dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 03/06/2008, 10h10
  3. Compter le nombre de fichiers dans une arborescence
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 9
    Dernier message: 22/08/2007, 10h29
  4. Récupération de fichiers dans une arborescence
    Par bibilolo2 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 04/05/2007, 22h19
  5. chercher un fichier dans une arborescence
    Par diamonds dans le forum Entrée/Sortie
    Réponses: 15
    Dernier message: 16/03/2007, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo