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 !

RECUPERATION DES INFOS DES TASKS SCHEDULED


Information sur la source

Catégorie :Applications Source .NET ( DotNet ) Classé sous : taches, planifiées, scheduledjob, jounal, mail Niveau : Débutant Date de création : 09/07/2007 Date de mise à jour : 27/08/2007 15:36:58 Vu / téléchargé: 5 095 / 199

Note :
Aucune note

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Ce code est assez basic mais il peut s'averer tres utile dans une société ou l'on doit s'assurer de la bonne execution de taches planifiée de maintenance ou de sauvegarde...
Ce code s'execute quotidiènement et ennoi un mail rappelant les tache qui se sont executées la veille avec en rouge les eventuel probèmes
 

Source

  • ublic static DataTable FindScheduledTask(string sTaskName)
  • {
  • //Debut Declaration
  • string strDirFichier = "C:\\WINDOWS\\TASKS\\SchedLgU.Txt"; //Dir Fichier log tahce plani
  • FileStream fs = new FileStream(strDirFichier, FileMode.Open); //ouverture fichier log
  • StreamReader sr = new StreamReader(fs, true); //Lecture
  • int iPosition; //Pointeur recherche de caratère dans ligne
  • int iIndex1; //Index de debut de mot
  • int iIndex2; //Index de fin de mot
  • int iLenIndex; //Longueur du mot
  • string sLigne; //Ligne lue
  • string sLigneJobName; //Nom de la tache recupérée dans ligne
  • string sLigneProgName; //Nom du programme recup
  • string sLigneCodeSortie; //Code Sortie recup
  • DateTime dtLigneDateFin; //Date Exec recup
  • DataTable dt = new DataTable(); //Tableau retourné
  • DataRow drNew; //Datarow d'insertion sur dt
  • DataView dv = new DataView(dt); //DataView de lecture de dt
  • dt.Columns.Add("Job", typeof(string)); //Création structure de dt
  • dt.Columns.Add("Prog", typeof(string));
  • dt.Columns.Add("Type", typeof(string));
  • dt.Columns.Add("DateFin", typeof(string));
  • dt.Columns.Add("Sortie", typeof(string));
  • sLigne = sr.ReadLine();
  • while (sLigne!=null) //Tant que il y a des lignes de log
  • {
  • iPosition = sLigne.IndexOf(sTaskName); //Verif si ligne consernant la tache
  • if (iPosition != -1)
  • {
  • sLigneJobName = sTaskName; //Recup du nom de la tache
  • iIndex1 = sLigne.IndexOf("(") + 1; //Recup du nom du programme
  • iIndex2 = sLigne.IndexOf(")");
  • iLenIndex = iIndex2 - iIndex1;
  • sLigneProgName = sLigne.Substring(iIndex1,iLenIndex);
  • //Contôle d'avertissement
  • iPosition = sLigne.IndexOf("AVERTISSEMENT");
  • if (iPosition != -1)
  • {
  • dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(iIndex2 + 1, 19));
  • int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
  • if (i == 0)
  • {
  • drNew = dt.NewRow();
  • drNew["Job"] = sLigneJobName;
  • drNew["Prog"] = sLigneProgName;
  • drNew["Type"] = "AVERTISSEMENT";
  • drNew["DateFin"] = dtLigneDateFin;
  • drNew["Sortie"] = "NON TERMINEE";
  • dt.Rows.Add(drNew);
  • }
  • }
  • //Fin Contôle d'avertissement
  • else
  • {
  • sLigne = sr.ReadLine(); //Ligne suivante
  • iPosition = sLigne.IndexOf("Quitté"); //Si Conserne Tache Quittée
  • if (iPosition != -1)
  • {
  • dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(9));
  • int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
  • if (i == 0)
  • { //recup du code sortie
  • sLigne = sr.ReadLine();
  • iIndex1 = sLigne.IndexOf("(") + 1;
  • iIndex2 = sLigne.IndexOf(")");
  • iLenIndex = iIndex2 - iIndex1;
  • sLigneCodeSortie = sLigne.Substring(iIndex1, iLenIndex);
  • //memo dans tableau
  • drNew = dt.NewRow();
  • drNew["Job"] = sLigneJobName;
  • drNew["Prog"] = sLigneProgName;
  • drNew["Type"] = "Quitté";
  • drNew["DateFin"] = dtLigneDateFin;
  • drNew["Sortie"] = sLigneCodeSortie;
  • dt.Rows.Add(drNew);
  • //Fin memo dans tableau
  • }
  • }
  • else
  • {
  • iPosition = sLigne.IndexOf("Démarré"); //Si Conserne Tache Démarré
  • if (iPosition != -1)
  • {
  • dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(10));
  • int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
  • if (i == 0)
  • {
  • //memo dans tableau dt
  • drNew = dt.NewRow();
  • drNew["Job"] = sLigneJobName;
  • drNew["Prog"] = sLigneProgName;
  • drNew["Type"] = "Démarré";
  • drNew["DateFin"] = dtLigneDateFin;
  • dt.Rows.Add(drNew);
  • // Fin memo dans tableau
  • }
  • }
  • }
  • }
  • }
  • sLigne = sr.ReadLine();
  • }
  • sr.Close();
  • fs.Close();
  • return (dt);
  • }
ublic static DataTable FindScheduledTask(string sTaskName)
        {   
            //Debut Declaration
            string strDirFichier = "C:\\WINDOWS\\TASKS\\SchedLgU.Txt";    //Dir Fichier log tahce plani
            FileStream fs = new FileStream(strDirFichier, FileMode.Open);   //ouverture fichier log
            StreamReader sr = new StreamReader(fs, true);           //Lecture 
            int iPosition;                                          //Pointeur recherche de caratère dans ligne
            int iIndex1;                                            //Index de debut de mot
            int iIndex2;                                            //Index de fin de mot
            int iLenIndex;                                          //Longueur du mot
            string sLigne;                                          //Ligne lue
            string sLigneJobName;                                   //Nom de la tache recupérée dans ligne
            string sLigneProgName;                                  //Nom du programme recup
            string sLigneCodeSortie;                                //Code Sortie recup
            DateTime dtLigneDateFin;                                //Date Exec recup
            DataTable dt = new DataTable();                         //Tableau retourné
            DataRow drNew;                                          //Datarow d'insertion sur dt
            DataView dv = new DataView(dt);                         //DataView de lecture de dt
            
            dt.Columns.Add("Job", typeof(string));                  //Création structure de dt
            dt.Columns.Add("Prog", typeof(string));
            dt.Columns.Add("Type", typeof(string));
            dt.Columns.Add("DateFin", typeof(string));
            dt.Columns.Add("Sortie", typeof(string));
            sLigne = sr.ReadLine();
            
            while (sLigne!=null)                                    //Tant que il y a des lignes de log
            {
                iPosition = sLigne.IndexOf(sTaskName);              //Verif si ligne consernant la tache
                if (iPosition != -1)
                {   
                    sLigneJobName = sTaskName;                      //Recup du nom de la tache

                    iIndex1 = sLigne.IndexOf("(") + 1;              //Recup du nom du programme
                    iIndex2 = sLigne.IndexOf(")");
                    iLenIndex = iIndex2 - iIndex1;
                    sLigneProgName = sLigne.Substring(iIndex1,iLenIndex);

                    //Contôle d'avertissement
                    iPosition = sLigne.IndexOf("AVERTISSEMENT");
                    if (iPosition != -1)
                    {
                        dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(iIndex2 + 1, 19));
                        int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
                        if (i == 0)
                        {
                            drNew = dt.NewRow();
                            drNew["Job"] = sLigneJobName;
                            drNew["Prog"] = sLigneProgName;
                            drNew["Type"] = "AVERTISSEMENT";
                            drNew["DateFin"] = dtLigneDateFin;
                            drNew["Sortie"] = "NON TERMINEE";
                            dt.Rows.Add(drNew);
                        }
                    }
                    //Fin Contôle d'avertissement

                    else
                    {
                        sLigne = sr.ReadLine();                         //Ligne suivante

                        iPosition = sLigne.IndexOf("Quitté");           //Si Conserne Tache Quittée
                        if (iPosition != -1)
                        {
                            dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(9));
                            int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
                            if (i == 0)
                            {   //recup du code sortie
                                sLigne = sr.ReadLine();
                                iIndex1 = sLigne.IndexOf("(") + 1;
                                iIndex2 = sLigne.IndexOf(")");
                                iLenIndex = iIndex2 - iIndex1;
                                sLigneCodeSortie = sLigne.Substring(iIndex1, iLenIndex);

                                //memo dans tableau
                                drNew = dt.NewRow();
                                drNew["Job"] = sLigneJobName;
                                drNew["Prog"] = sLigneProgName;
                                drNew["Type"] = "Quitté";
                                drNew["DateFin"] = dtLigneDateFin;
                                drNew["Sortie"] = sLigneCodeSortie;
                                dt.Rows.Add(drNew);
                                //Fin memo dans tableau
                            }
                        }
                        else
                        {   
                            iPosition = sLigne.IndexOf("Démarré");           //Si Conserne Tache Démarré
                            if (iPosition != -1)
                            {
                                dtLigneDateFin = System.DateTime.Parse(sLigne.Substring(10));
                                int i = DateTime.Compare(dtLigneDateFin.Date, DateTime.Now.Date.AddDays(-1));
                                if (i == 0)
                                {
                                    //memo dans tableau dt
                                    drNew = dt.NewRow();
                                    drNew["Job"] = sLigneJobName;
                                    drNew["Prog"] = sLigneProgName;
                                    drNew["Type"] = "Démarré";
                                    drNew["DateFin"] = dtLigneDateFin;
                                    dt.Rows.Add(drNew);
                                    // Fin memo dans tableau
                                }
                            }    
                        }
                    }   
                }
            
                sLigne = sr.ReadLine();
            }
            sr.Close();
            fs.Close();
            return (dt);
        }

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   VerifTachesPanifiées
    • mssccprj.sccTélécharger ce fichier [Réservé aux membres club]151 octets
    • TP_VERIF_TP.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier926 octets
    • TP_VERIF_TP.suoTélécharger ce fichier [Réservé aux membres club]22 528 octets
    • vssver2.sccTélécharger ce fichier [Réservé aux membres club]127 octets
    •   TP_VERIF_TP
      • Form1.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier798 octets
      • Form1.Designer.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 581 octets
      • Form1.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier5 814 octets
      • mssccprj.sccTélécharger ce fichier [Réservé aux membres club]166 octets
      • Program.csTélécharger ce fichier [Réservé aux membres club]Voir ce fichier13 171 octets
      • TP_VERIF_TP.csprojTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 336 octets
      • vssver2.sccTélécharger ce fichier [Réservé aux membres club]223 octets
      •   obj
        • TP_VERIF_TP.csproj.FileList.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier608 octets
        • vssver2.sccTélécharger ce fichier [Réservé aux membres club]127 octets
        •   Debug
          • Refactor
          • TempPE
          • TP_VERIF_TP.csproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]842 octets
          • TP_VERIF_TP.exeTélécharger ce fichier [Réservé aux membres club]24 576 octets
          • TP_VERIF_TP.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • TP_VERIF_TP.pdbTélécharger ce fichier [Réservé aux membres club]26 112 octets
          • TP_VERIF_TP.Properties.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • vssver2.sccTélécharger ce fichier [Réservé aux membres club]310 octets
        •   Release
          • TempPE
          • TP_VERIF_TP.csproj.GenerateResource.CacheTélécharger ce fichier [Réservé aux membres club]842 octets
          • TP_VERIF_TP.exeTélécharger ce fichier [Réservé aux membres club]24 576 octets
          • TP_VERIF_TP.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • TP_VERIF_TP.pdbTélécharger ce fichier [Réservé aux membres club]24 064 octets
          • TP_VERIF_TP.Properties.Resources.resourcesTélécharger ce fichier [Réservé aux membres club]180 octets
          • vssver2.sccTélécharger ce fichier [Réservé aux membres club]312 octets
      •   Properties
      •   bin
        •   Debug
          • CopyTaskLog.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier59 octets
          • DeleteTaskLog.batTélécharger ce fichier [Réservé aux membres club]Voir ce fichier42 octets
          • TP_VERIF_TP.exeTélécharger ce fichier [Réservé aux membres club]24 576 octets
          • TP_VERIF_TP.pdbTélécharger ce fichier [Réservé aux membres club]26 112 octets
          • TP_VERIF_TP.vshost.exeTélécharger ce fichier [Réservé aux membres club]5 632 octets
          • vssver2.sccTélécharger ce fichier [Réservé aux membres club]254 octets
        •   Release
          • TP_VERIF_TP.exeTélécharger ce fichier [Réservé aux membres club]24 576 octets
          • TP_VERIF_TP.pdbTélécharger ce fichier [Réservé aux membres club]24 064 octets
          • vssver2.sccTélécharger ce fichier [Réservé aux membres club]151 octets

Télécharger le zip

Historique

10 juillet 2007 08:13:21 :
Je modifie les mots clé car il était introuvable...
10 juillet 2007 08:58:42 :
...
27 août 2007 15:36:58 :
Modif titre

Commentaires et avis

signaler à un administrateur
Commentaire de bigmonkey7 le 09/07/2007 16:27:44

Bonjour,
Voici mon code, il exploite le journal des taches planifiées. Il y a un autre moyen que je voulais exploité avec WMI et le System.Management mais j'ai un souci avec la classe Win32_ScheduledJob, ça trouve rien... voici mon code :

string sJobID;
          
    ConnectionOptions aConnectionOptions = new ConnectionOptions();
    aConnectionOptions.Username = "domaine\\login";
    aConnectionOptions.Password = "password";

ManagementScope aManagementScope = new ManagementScope("\\\\73.1.0.\\root\\cimv2", aConnectionOptions);

System.Management.ObjectQuery aObjectQuery = new System.Management.ObjectQuery("select * from Win32_ScheduledJob");
ManagementObjectSearcher aManagementObjectSearcher = new ManagementObjectSearcher(aManagementScope, aObjectQuery);
            aManagementObjectSearcher.Scope.Connect();
            ManagementObjectCollection aManagementObjectCollection = aManagementObjectSearcher.Get();
            foreach (ManagementObject aManagementObject in aManagementObjectCollection)
            {
                sJobID = aManagementObject["JobId"].ToString();
            }

Le foreach ne se fait pas car il n'y a rien dans aManagementObjectCollection
Je ne comprends pas.... Si Quelqu'un connaît bien le WMI... Merci

signaler à un administrateur
Commentaire de bigmonkey7 le 11/07/2007 19:38:49

Bon comme personne ne repond je vais me repondre ...comme u grnd ..peu etre que quelqu'un cherchera la meme chose et trouvera donc rapidment...
ALors :
Ill y a deux types de tâches planifiées :

- Les tâches planifiées gérés par l'API des tâches planfiées
Ce sont les taches panifiées qu l'on trove dans le panneau de config:

http://www.mvps.org/emorcillo/en/code/shell/tasksched.shtml
Ici vous trouverez une dll (dans un zip) qui permet d'acceder à celle ci...

- Les tâches planifiées de AT.exe
Accessiblent avec Win32_ScheduledJob voici un petit bout de code qui permet d'y acceder:
ConnectionOptions aConnectionOptions = new ConnectionOptions();
aConnectionOptions.Username = "domaine\\login";
aConnectionOptions.Password = "password";

ManagementScope aManagementScope = new ManagementScope("\\\\leServeur\\root\\cimv2", aConnectionOptions);

System.Management.ObjectQuery aObjectQuery = new System.Management.ObjectQuery("select * from Win32_ScheduledJob");
ManagementObjectSearcher aManagementObjectSearcher = new ManagementObjectSearcher(aManagementScope, aObjectQuery);
aManagementObjectSearcher.Scope.Connect();
ManagementObjectCollection aManagementObjectCollection = aManagementObjectSearcher.Get();
foreach (ManagementObject aManagementObject in aManagementObjectCollection)
{
sJobID = aManagementObject["JobId"].ToString();
}
Voila avec la reference system.management
En telechargent WMITool vous pouvez visualiser tout les class : ex : les infos disques, reseau,etc et avec system.managment vous pouvez tt atteindre en suivant l'exemple.
VOila  


signaler à un administrateur
Commentaire de slyphoenix le 13/09/2007 14:52:56

Bonjour
je suis debutant dans tout ce qui concerne le devellopement et je voudrais svp savoir comment exploiter et compiler ce programme, Merci d'avance

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Réception de mail [ par PetitJean ] Bonjour, J'ai compris comment envoyer un mail avec la classe smtpmail mais je n'arrive pas à trouver comment réceptionner des mails sur un serveur POP barre des taches [ par CrAShGuN ] Je voudrais savoir comment on fait pour mettre une application C# dans la barre des tâches de windows, c'est-à-dire mettre une petite icône juste à cô envoyer un mail avec le programme win par défaut [ par zouzounet ] Bonjour :)Je débute en c# et j'aimerais savoir comment je peux configurer mon linklabel pour qu'avec un click dessus ça lance un mail avec le programm Récuperer mail dans une page html [ par Kain13 ] Bonjour,Comment vérifier si lors d'un traitement d'un formulaire, l'utilisateur a bien mis une adresse mail valide : Pseudo@FAI.comJe sais le faire en envoie d'e-mail en C# pour PPC [ par kalakalaboubou ] Bonjour a toustout d'abord merci pour les reponses precedantes elle m'ont ete d'une aide incroyable.c'est bon de savoir qu'on peux compter sur vous.en System.Web manquant [ par rafni ] je suis en train d'essayer de faire une applic ou je dois envoyer un mail, j'ai donc fais un using System.Web.Mail mais le compilo ne trouve pas l'ass mail [ par JCpp ] Je n'arrive pas à m'envoyer un E-MailPourtant, j'ai suivis toute la procédure.J'ai ajouté system.Web.dll dans Add ReferenceJ'ai mi : using System.Web. Calculer la hauteur d ela barre des taches [ par Cameleon69 ] Je cherche comment calculer la hauteur de la barre des taches ou sa largeur si elle est sur les cotés.Je ne vois pas comment faire, quelqu'un a t-il u Masquer barre des tâches [ par giorgio08 ] Bonjour a tous j'aurais voulu savoir comment faire pour masquer la barre des taches de windows en dessous lorsque je lance mon application => je vo Envoi de mail [ par vincir ] Bonjour, Je souhaiterais envoyer un nombre assez important de mail aux abonnés à ma newsletter (environ 1000). J'ai donc ecrit un petit programme en


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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,390 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é.