Advertisement
Guest User

TimeToBAc

a guest
Dec 15th, 2013
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.14 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.IO;
  10. using System.Runtime.InteropServices;                // pentru dezactivarea butonului de inchidere
  11. namespace Time_To_BAC
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.  
  19.             ora_curenta = int.Parse(DateTime.Now.Hour.ToString());
  20.             minut_curent = int.Parse(DateTime.Now.Minute.ToString());        // calculare T.C.
  21.             secunda_curenta = int.Parse(DateTime.Now.Second.ToString());
  22.             zi_curenta = int.Parse(DateTime.Now.Day.ToString());
  23.  
  24.            
  25.         }
  26.  
  27.         //________________________Prototipuri pentru dezactivarea butonului de inchidere (API)_______________
  28.  
  29.         const int MF_BYPOSITION = 0x400;
  30.        
  31.         [DllImport("User32")]
  32.  
  33.         private static extern int RemoveMenu(IntPtr hMenu, int nPosition, int wFlags);
  34.  
  35.         [DllImport("User32")]
  36.  
  37.         private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
  38.  
  39.         [DllImport("User32")]
  40.  
  41.         private static extern int GetMenuItemCount(IntPtr hWnd);
  42.  
  43.         //_____________________________________________________________________________________________________
  44.  
  45.  
  46.         int ora_curenta, minut_curent, secunda_curenta;                  // timp curent: T.C. calculat runtime
  47.         int ora_timp_bac, minut_timp_bac, secunda_timp_bac;              // timp bac curent: T.B.C. (care se afisaza)
  48.         int ora_diferenta, minut_diferenta, secunda_diferenta;           // timp diferenta: T.D.
  49.         int ora_fisier_sistem, minut_fisier_sistem, secunda_fisier_sistem; // T.S.S. (timpul sistemului cand s-a oprit aplicatia, stocat in fisier)
  50.         int ora_bac_fisier, minut_bac_fisier, secunda_bac_fisier;        // T.B.S. (timpul afisat in momentul in care s-a oprit aplicatia)
  51.        
  52.         StreamReader reader = new StreamReader("D:\\TimeToBacSourceFile.txt");
  53.        
  54.         int zi_curenta, zi_fisier;
  55.  
  56.         bool ora_switch = true, minut_switch = true;              // flag-uri pentru decrementare la scaderea timpilor
  57.  
  58.         private void Form1_Load(object sender, EventArgs e)
  59.         {
  60.             //_________________Dezactivarea butonului de inchidere_____________________________
  61.  
  62.             IntPtr hMenu = (IntPtr)GetSystemMenu(this.Handle, false);
  63.  
  64.             int menuItemCount = GetMenuItemCount(hMenu);
  65.  
  66.             RemoveMenu(hMenu, menuItemCount - 1, MF_BYPOSITION);
  67.  
  68.             //_______________________________________________________________________________
  69.  
  70.  
  71.             #region Algoritmul_calcularii_timpului_pana_la_bac
  72.  
  73.            
  74.  
  75.             string[] matrice_stringuri = null;
  76.             string linie = null;
  77.  
  78.             linie = reader.ReadLine();
  79.  
  80.             matrice_stringuri = linie.Split(':');
  81.  
  82.             ora_bac_fisier = int.Parse(matrice_stringuri[0]);
  83.             minut_bac_fisier = int.Parse(matrice_stringuri[1]);
  84.             secunda_bac_fisier = int.Parse(matrice_stringuri[2]);
  85.  
  86.             linie = reader.ReadLine();
  87.             matrice_stringuri = linie.Split(':');
  88.  
  89.             ora_fisier_sistem = int.Parse(matrice_stringuri[0]);
  90.             minut_fisier_sistem = int.Parse(matrice_stringuri[1]);
  91.             secunda_fisier_sistem = int.Parse(matrice_stringuri[2]);
  92.  
  93.             linie = reader.ReadLine();
  94.  
  95.             zi_fisier = int.Parse(linie);
  96.  
  97.             if (zi_fisier == zi_curenta)
  98.             {
  99.  
  100.                 #region Calculare T.D. daca deschid aplicatia in aceeasi zi
  101.  
  102.                 secunda_diferenta = secunda_curenta - secunda_fisier_sistem;
  103.  
  104.                 if (secunda_diferenta < 0)
  105.                 {
  106.                     secunda_diferenta = 60 - (-1) * (secunda_diferenta);
  107.                     minut_switch = false;
  108.                 }
  109.  
  110.                 minut_diferenta = minut_curent - minut_fisier_sistem;
  111.  
  112.                 if (minut_switch == false)
  113.                 {
  114.                     minut_diferenta--;
  115.                 }
  116.  
  117.                 minut_switch = true;
  118.  
  119.                 if (minut_diferenta < 0)
  120.                 {
  121.                     minut_diferenta = 60 - (-1) * (minut_diferenta);
  122.                     ora_switch = false;
  123.                 }
  124.  
  125.                 ora_diferenta = ora_curenta - ora_fisier_sistem;
  126.  
  127.                 if (ora_switch == false)
  128.                 {
  129.                     ora_diferenta--;
  130.                 }
  131.                 ora_switch = true;
  132.                 #endregion
  133.  
  134.             }
  135.  
  136.             if (zi_curenta > zi_fisier)
  137.             {
  138.                 int secunda_temp_diferenta=0, minut_temp_diferenta=0, ora_temp_diferenta=0;
  139.                
  140.                 int numar_de_zile = zi_curenta - zi_fisier;
  141.  
  142.                 if (numar_de_zile < 0)
  143.                 {
  144.                     numar_de_zile = zi_fisier - (-1) * numar_de_zile;
  145.                 }
  146.  
  147.                   #region Calculare T.D. daca deschid aplicatia in zile diferite
  148.  
  149.                  
  150.                 if (ora_curenta < ora_fisier_sistem)
  151.                 {
  152.                     secunda_temp_diferenta = secunda_fisier_sistem - secunda_curenta;
  153.  
  154.                     if (secunda_temp_diferenta < 0)
  155.                     {
  156.                         secunda_temp_diferenta = 60 - (-1) * (secunda_temp_diferenta);
  157.                         minut_switch = false;
  158.                     }
  159.  
  160.                     minut_temp_diferenta = minut_fisier_sistem - minut_curent;
  161.  
  162.                     if (minut_switch == false)
  163.                     {
  164.                         minut_temp_diferenta--;
  165.                     }
  166.  
  167.                     minut_switch = true;
  168.  
  169.                     if (minut_temp_diferenta < 0)
  170.                     {
  171.                         minut_temp_diferenta = 60 - (-1) * (minut_temp_diferenta);
  172.                         ora_switch = false;
  173.                     }
  174.                
  175.                     ora_temp_diferenta = ora_fisier_sistem - ora_curenta;
  176.  
  177.                     if (ora_switch == false)
  178.                     {
  179.                         ora_temp_diferenta--;
  180.                     }
  181.                     ora_switch = true;
  182.  
  183.                     secunda_diferenta = 60 - secunda_temp_diferenta;
  184.  
  185.                     minut_diferenta = 60 - (minut_temp_diferenta + 1);
  186.  
  187.                     ora_diferenta = (24 * numar_de_zile - ora_temp_diferenta) - 1;
  188.  
  189.                 }
  190.                 else if (ora_curenta > ora_fisier_sistem)
  191.                 {
  192.                     secunda_temp_diferenta = secunda_curenta - secunda_fisier_sistem;
  193.  
  194.                     if (secunda_temp_diferenta < 0)
  195.                     {
  196.                         secunda_temp_diferenta = 60 - (-1) * (secunda_temp_diferenta);
  197.                         minut_switch = false;
  198.                     }
  199.  
  200.                     minut_temp_diferenta = minut_curent - minut_fisier_sistem;
  201.  
  202.                     if (minut_switch == false)
  203.                     {
  204.                         minut_temp_diferenta--;
  205.                     }
  206.  
  207.                     minut_switch = true;
  208.  
  209.                     if (minut_temp_diferenta < 0)
  210.                     {
  211.                         minut_temp_diferenta = 60 - (-1) * (minut_temp_diferenta);
  212.                         ora_switch = false;
  213.                     }
  214.  
  215.                     ora_temp_diferenta = ora_curenta - ora_fisier_sistem;
  216.  
  217.                     if (ora_switch == false)
  218.                     {
  219.                         ora_temp_diferenta--;
  220.                     }
  221.                     ora_switch = true;
  222.  
  223.                     ora_diferenta = 24 * numar_de_zile + ora_temp_diferenta;
  224.                     minut_diferenta = minut_temp_diferenta;
  225.                     secunda_diferenta = secunda_temp_diferenta;
  226.                 }
  227.  
  228.                
  229.  
  230.  
  231.                   #endregion
  232.             }
  233.  
  234.  
  235.             #region Calculare_timp_curent_bac_[nu necesita modificare]
  236.             secunda_timp_bac = secunda_bac_fisier - secunda_diferenta;
  237.  
  238.             if (secunda_timp_bac < 0)
  239.             {
  240.                 secunda_timp_bac = 60 - (-1) * secunda_timp_bac;
  241.                 minut_switch = false;
  242.             }
  243.  
  244.             minut_timp_bac = minut_bac_fisier - minut_diferenta;
  245.  
  246.             if (minut_switch == false)
  247.             {
  248.                 minut_timp_bac--;
  249.             }
  250.  
  251.             if (minut_timp_bac < 0)
  252.             {
  253.                 minut_timp_bac = 60 - (-1) * minut_timp_bac;
  254.                 ora_switch = false;
  255.             }
  256.  
  257.             ora_timp_bac = ora_bac_fisier - ora_diferenta;
  258.  
  259.             if (ora_switch == false)
  260.             {
  261.                 ora_timp_bac--;
  262.             }
  263.             //_______________________________________________________________________________________
  264.             //Calcularea timpului bac_curent este corecta, nu necesita modificari deoarece
  265.             //timp_bac_stop (din fisier) va fi intotdeauna mult mai mare decat timp_diferenta, deci nu e nevoie
  266.             //de introducerea unui parametru in plus (data)
  267.             #endregion
  268.  
  269.             #endregion    
  270.  
  271.             timer1.Start();
  272.         }
  273.  
  274.         private void timer1_Tick(object sender, EventArgs e)
  275.         {
  276.  
  277.             if (minut_timp_bac == 0 && secunda_timp_bac == 0)
  278.             {
  279.                 ora_timp_bac--;
  280.                 minut_timp_bac = 59;
  281.             }
  282.  
  283.             if (secunda_timp_bac < 10 && minut_timp_bac > 9)
  284.             {
  285.                 label1.Text = ora_timp_bac.ToString() + " : " + minut_timp_bac.ToString() + " : 0" + secunda_timp_bac.ToString();
  286.             }
  287.             else if (minut_timp_bac < 10 && secunda_timp_bac > 9)
  288.             {
  289.                 label1.Text = ora_timp_bac.ToString() + " : 0" + minut_timp_bac.ToString() + " : " + secunda_timp_bac.ToString();
  290.             }
  291.             else if (minut_timp_bac < 10 && secunda_timp_bac < 10)
  292.             {
  293.                 label1.Text = ora_timp_bac.ToString() + " : 0" + minut_timp_bac.ToString() + " : 0" + secunda_timp_bac.ToString();
  294.             }
  295.             else
  296.                 label1.Text = ora_timp_bac.ToString() + " : " + minut_timp_bac.ToString() + " : " + secunda_timp_bac.ToString();
  297.  
  298.             if (secunda_timp_bac == 0)
  299.             {
  300.                 secunda_timp_bac = 60;
  301.  
  302.                 minut_timp_bac--;
  303.             }
  304.  
  305.             secunda_timp_bac--;
  306.  
  307.             if (ora_timp_bac == 0 && minut_timp_bac == 0 && secunda_timp_bac == 0)
  308.             {
  309.                 //XXX
  310.             }
  311.  
  312.            
  313.         }
  314.  
  315.         private void button1_Click(object sender, EventArgs e)
  316.         {
  317.             reader.Close();
  318.  
  319.             StreamWriter writer = new StreamWriter("D:\\TimeToBacSourceFile.txt");
  320.  
  321.             writer.WriteLine(ora_timp_bac.ToString() + ":" + minut_timp_bac.ToString() + ":" + secunda_timp_bac.ToString());
  322.  
  323.             writer.WriteLine(DateTime.Now.Hour.ToString() + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString());
  324.  
  325.             writer.WriteLine(DateTime.Now.Day.ToString());
  326.  
  327.             writer.Close();
  328.  
  329.             Application.Exit();
  330.         }
  331.  
  332.      }
  333. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement