Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- using System.IO;
- using System.Runtime.InteropServices; // pentru dezactivarea butonului de inchidere
- namespace Time_To_BAC
- {
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- ora_curenta = int.Parse(DateTime.Now.Hour.ToString());
- minut_curent = int.Parse(DateTime.Now.Minute.ToString()); // calculare T.C.
- secunda_curenta = int.Parse(DateTime.Now.Second.ToString());
- zi_curenta = int.Parse(DateTime.Now.Day.ToString());
- }
- //________________________Prototipuri pentru dezactivarea butonului de inchidere (API)_______________
- const int MF_BYPOSITION = 0x400;
- [DllImport("User32")]
- private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);
- [DllImport("User32")]
- private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
- [DllImport("User32")]
- private static extern int GetMenuItemCount(IntPtr hWnd);
- //_____________________________________________________________________________________________________
- int ora_curenta, minut_curent, secunda_curenta; // timp curent: T.C. calculat runtime
- int ora_timp_bac, minut_timp_bac, secunda_timp_bac; // timp bac curent: T.B.C. (care se afisaza)
- int ora_diferenta, minut_diferenta, secunda_diferenta; // timp diferenta: T.D.
- int ora_fisier_sistem, minut_fisier_sistem, secunda_fisier_sistem; // T.S.S. (timpul sistemului cand s-a oprit aplicatia, stocat in fisier)
- int ora_bac_fisier, minut_bac_fisier, secunda_bac_fisier; // T.B.S. (timpul afisat in momentul in care s-a oprit aplicatia)
- StreamReader reader = new StreamReader("D:\\TimeToBacSourceFile.txt");
- int zi_curenta, zi_fisier;
- bool ora_switch = true, minut_switch = true; // flag-uri pentru decrementare la scaderea timpilor
- private void Form1_Load(object sender, EventArgs e)
- {
- //_________________Dezactivarea butonului de inchidere_____________________________
- IntPtr hMenu = (IntPtr)GetSystemMenu(this.Handle, false);
- int menuItemCount = GetMenuItemCount(hMenu);
- RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);
- //_______________________________________________________________________________
- #region Algoritmul_calcularii_timpului_pana_la_bac
- string[] matrice_stringuri = null;
- string linie = null;
- linie = reader.ReadLine();
- matrice_stringuri = linie.Split(':');
- ora_bac_fisier = int.Parse(matrice_stringuri[0]);
- minut_bac_fisier = int.Parse(matrice_stringuri[1]);
- secunda_bac_fisier = int.Parse(matrice_stringuri[2]);
- linie = reader.ReadLine();
- matrice_stringuri = linie.Split(':');
- ora_fisier_sistem = int.Parse(matrice_stringuri[0]);
- minut_fisier_sistem = int.Parse(matrice_stringuri[1]);
- secunda_fisier_sistem = int.Parse(matrice_stringuri[2]);
- linie = reader.ReadLine();
- zi_fisier = int.Parse(linie);
- if (zi_fisier == zi_curenta)
- {
- #region Calculare T.D. daca deschid aplicatia in aceeasi zi
- secunda_diferenta = secunda_curenta - secunda_fisier_sistem;
- if (secunda_diferenta < 0)
- {
- secunda_diferenta = 60 - (-1) * (secunda_diferenta);
- minut_switch = false;
- }
- minut_diferenta = minut_curent - minut_fisier_sistem;
- if (minut_switch == false)
- {
- minut_diferenta--;
- }
- minut_switch = true;
- if (minut_diferenta < 0)
- {
- minut_diferenta = 60 - (-1) * (minut_diferenta);
- ora_switch = false;
- }
- ora_diferenta = ora_curenta - ora_fisier_sistem;
- if (ora_switch == false)
- {
- ora_diferenta--;
- }
- ora_switch = true;
- #endregion
- }
- if (zi_curenta > zi_fisier)
- {
- int secunda_temp_diferenta=0, minut_temp_diferenta=0, ora_temp_diferenta=0;
- int numar_de_zile = zi_curenta - zi_fisier;
- if (numar_de_zile < 0)
- {
- numar_de_zile = zi_fisier - (-1) * numar_de_zile;
- }
- #region Calculare T.D. daca deschid aplicatia in zile diferite
- if (ora_curenta < ora_fisier_sistem)
- {
- secunda_temp_diferenta = secunda_fisier_sistem - secunda_curenta;
- if (secunda_temp_diferenta < 0)
- {
- secunda_temp_diferenta = 60 - (-1) * (secunda_temp_diferenta);
- minut_switch = false;
- }
- minut_temp_diferenta = minut_fisier_sistem - minut_curent;
- if (minut_switch == false)
- {
- minut_temp_diferenta--;
- }
- minut_switch = true;
- if (minut_temp_diferenta < 0)
- {
- minut_temp_diferenta = 60 - (-1) * (minut_temp_diferenta);
- ora_switch = false;
- }
- ora_temp_diferenta = ora_fisier_sistem - ora_curenta;
- if (ora_switch == false)
- {
- ora_temp_diferenta--;
- }
- ora_switch = true;
- secunda_diferenta = 60 - secunda_temp_diferenta;
- minut_diferenta = 60 - (minut_temp_diferenta + 1);
- ora_diferenta = (24 * numar_de_zile - ora_temp_diferenta) - 1;
- }
- else if (ora_curenta > ora_fisier_sistem)
- {
- secunda_temp_diferenta = secunda_curenta - secunda_fisier_sistem;
- if (secunda_temp_diferenta < 0)
- {
- secunda_temp_diferenta = 60 - (-1) * (secunda_temp_diferenta);
- minut_switch = false;
- }
- minut_temp_diferenta = minut_curent - minut_fisier_sistem;
- if (minut_switch == false)
- {
- minut_temp_diferenta--;
- }
- minut_switch = true;
- if (minut_temp_diferenta < 0)
- {
- minut_temp_diferenta = 60 - (-1) * (minut_temp_diferenta);
- ora_switch = false;
- }
- ora_temp_diferenta = ora_curenta - ora_fisier_sistem;
- if (ora_switch == false)
- {
- ora_temp_diferenta--;
- }
- ora_switch = true;
- ora_diferenta = 24 * numar_de_zile + ora_temp_diferenta;
- minut_diferenta = minut_temp_diferenta;
- secunda_diferenta = secunda_temp_diferenta;
- }
- #endregion
- }
- #region Calculare_timp_curent_bac_[nu necesita modificare]
- secunda_timp_bac = secunda_bac_fisier - secunda_diferenta;
- if (secunda_timp_bac < 0)
- {
- secunda_timp_bac = 60 - (-1) * secunda_timp_bac;
- minut_switch = false;
- }
- minut_timp_bac = minut_bac_fisier - minut_diferenta;
- if (minut_switch == false)
- {
- minut_timp_bac--;
- }
- if (minut_timp_bac < 0)
- {
- minut_timp_bac = 60 - (-1) * minut_timp_bac;
- ora_switch = false;
- }
- ora_timp_bac = ora_bac_fisier - ora_diferenta;
- if (ora_switch == false)
- {
- ora_timp_bac--;
- }
- //_______________________________________________________________________________________
- //Calcularea timpului bac_curent este corecta, nu necesita modificari deoarece
- //timp_bac_stop (din fisier) va fi intotdeauna mult mai mare decat timp_diferenta, deci nu e nevoie
- //de introducerea unui parametru in plus (data)
- #endregion
- #endregion
- timer1.Start();
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- if (minut_timp_bac == 0 && secunda_timp_bac == 0)
- {
- ora_timp_bac--;
- minut_timp_bac = 59;
- }
- if (secunda_timp_bac < 10 && minut_timp_bac > 9)
- {
- label1.Text = ora_timp_bac.ToString() + " : " + minut_timp_bac.ToString() + " : 0" + secunda_timp_bac.ToString();
- }
- else if (minut_timp_bac < 10 && secunda_timp_bac > 9)
- {
- label1.Text = ora_timp_bac.ToString() + " : 0" + minut_timp_bac.ToString() + " : " + secunda_timp_bac.ToString();
- }
- else if (minut_timp_bac < 10 && secunda_timp_bac < 10)
- {
- label1.Text = ora_timp_bac.ToString() + " : 0" + minut_timp_bac.ToString() + " : 0" + secunda_timp_bac.ToString();
- }
- else
- label1.Text = ora_timp_bac.ToString() + " : " + minut_timp_bac.ToString() + " : " + secunda_timp_bac.ToString();
- if (secunda_timp_bac == 0)
- {
- secunda_timp_bac = 60;
- minut_timp_bac--;
- }
- secunda_timp_bac--;
- if (ora_timp_bac == 0 && minut_timp_bac == 0 && secunda_timp_bac == 0)
- {
- //XXX
- }
- }
- private void button1_Click(object sender, EventArgs e)
- {
- reader.Close();
- StreamWriter writer = new StreamWriter("D:\\TimeToBacSourceFile.txt");
- writer.WriteLine(ora_timp_bac.ToString() + ":" + minut_timp_bac.ToString() + ":" + secunda_timp_bac.ToString());
- writer.WriteLine(DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString());
- writer.WriteLine(DateTime.Now.Day.ToString());
- writer.Close();
- Application.Exit();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement