private void closeInactiveSessions() { Cstatus status = new Cstatus(); List <String> systemPrograms = status.GetProcesses(); //tüm takip edilenleri bul DataTable dbPrograms = Cprograms.getAllTracked(); foreach (DataRow dbProgram in dbPrograms.Rows) { //eğer çalışmıyorsa if (!systemPrograms.Contains((String)dbProgram["exe"])) { //açık session(ları) ı kapat Csessions.close((int)dbProgram["programid"]); if (!(bool)dbProgram["is_confirmed"]) { iTimer.Enabled = false; DialogResult result = MessageBox.Show(Strings.Tracking + " " + (String)dbProgram["exe"], (String)dbProgram["exe"], MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { Cprograms.track((String)dbProgram["exe"]); } else if (result == DialogResult.No) { Cprograms.hide((String)dbProgram["exe"]); } iTimer.Enabled = true; } } } }
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 }