Beispiel #1
0
        private void updateActiveSessions()
        {
            Cstatus status = new Cstatus();

            List <String> systemPrograms = status.GetProcesses();
            DataTable     dbPrograms     = new DataTable();

            dbPrograms = Cprograms.getAll();


            //sistemdeki tüm programları gez ve bağlı olarak sessionları oluştur veya update et
            foreach (String programExe in systemPrograms)
            {
                //program kayıtlı mı kontrol et
                var rows = dbPrograms.Select("exe = '" + programExe + "'");

                //eğer veri tabanında varsa
                if (rows.Length != 0)
                {
                    //ve eğer takip ediliyorsa
                    if ((bool)rows[0]["is_tracked"])
                    {
                        int programId = (int)rows[0]["programid"];
                        //programa ait açık sessionları bul
                        DataTable sessions = Csessions.getOpen(programId);

                        //eğer session varsa
                        if (sessions.Rows.Count > 0)
                        {
                            //her açık olan her sessionı update et (normalde birden fazla satır olmaması lazım ama yinede kontrol et)
                            foreach (DataRow session in sessions.Rows)
                            {
                                Csessions.update(programId, (Properties.Settings.Default.loopTime / 1000));
                            }
                        }
                        else
                        {
                            //açık session yok
                            //session oluştur
                            Csessions.create(programId);
                        }
                    }
                }
                else //veri tabanında kaydı yok ise
                {
                    //programı kaydet ama sonra kullanıcıya sormak üzere işaretle
                    Cprograms.insert(null, programExe, true, null, 1, false);
                }
            } //end of for system programs
        }
Beispiel #2
0
        public List <String> GetUnregistredProcesses()
        {
            List <String>   programNames = new List <string>();
            ManagementClass MgmtClass    = new ManagementClass("Win32_Process");

            foreach (ManagementObject mo in MgmtClass.GetInstances())
            {
                programNames.Add(mo["Name"].ToString());
                //programNames.Add("Name: " + mo["Name"] + "\t\t ID: " + mo["ProcessId"] + "\t\t Path: " + mo["ExecutablePath"]);
            }
            programNames = programNames.Distinct().ToList();
            DataTable dbPrograms = new DataTable();

            dbPrograms = Cprograms.getAll();

            List <string> dbList = dbPrograms.AsEnumerable()
                                   .Select(r => r.Field <string>("exe"))
                                   .ToList();

            List <String> difList = programNames.Except(dbList).ToList();

            return(difList);
        }