幫朋友做的限制小孩上網時間軟件的源碼


昨天幫朋友做一個限制他們家小孩上網時間的軟件,覺得很有意義,花了兩個小時,很簡單,還挺管用,針對只會玩游戲的小孩夠用了!呵呵。

下面是源文件下載地址:

http://files.cnblogs.com/mane/WINUSER.zip

XML文件,(應該加密帳號密碼的,太麻煩,就算了)

<?xml version="1.0" encoding="utf-8" ?>
<Users>
  <!--記錄用戶的帳號,密碼,已經可以使用的時間-->
  <User name="Admin" pwd="123456" role="管理員" date="2012-07-02">10</User>
  <User name="User" pwd="123456" role="" date="2012-07-02">10</User>
</Users>

操作XML的類 (別見怪,重復利用率是個問題)

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;//引入XML命名空間

namespace WINUSER
{
    class ControlXML
    {
        private string filePath;

        public ControlXML(string XMLFilePath)
        {
            filePath = XMLFilePath;
        }

        /// <summary>
        /// 獲取時間值
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPwd"></param>
        /// <returns></returns>
        public string GetValue(string userName, string userPwd)
        {
            string value=""; 
            XmlDocument XMLDoc = new XmlDocument();
            XMLDoc.Load(filePath);//讀取XML文檔
            XmlNode xn = XMLDoc.SelectSingleNode("Users");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                if (xnf.Name == "User")
                {
                    XmlElement sonData = (XmlElement)xnf;
                    if (sonData.GetAttribute("name") == userName && sonData.GetAttribute("pwd") == userPwd)
                    {
                        value = sonData.InnerText;
                    }
                }
            }
            return value;
        }

        /// <summary>
        /// 獲取日期
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPwd"></param>
        /// <returns></returns>
        public DateTime GetData(string userName, string userPwd)
        {
            DateTime dt=new DateTime ();
            XmlDocument XMLDoc = new XmlDocument();
            XMLDoc.Load(filePath);//讀取XML文檔
            XmlNode xn = XMLDoc.SelectSingleNode("Users");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                if (xnf.Name == "User")
                {
                    XmlElement sonData = (XmlElement)xnf;
                    if (sonData.GetAttribute("name") == userName && sonData.GetAttribute("pwd") == userPwd)
                    {
                        dt = Convert.ToDateTime(sonData.GetAttribute("date"));
                    }
                }
            }
            return dt;
        }

        /// <summary>
        /// 獲取用戶規則
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPwd"></param>
        /// <returns></returns>
        public string GetRole(string userName, string userPwd)
        {
            string role = "";
            XmlDocument XMLDoc = new XmlDocument();
            XMLDoc.Load(filePath);//讀取XML文檔
            XmlNode xn = XMLDoc.SelectSingleNode("Users");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                if (xnf.Name == "User")
                {
                    XmlElement sonData = (XmlElement)xnf;
                    if (sonData.GetAttribute("name") == userName && sonData.GetAttribute("pwd") == userPwd)
                    {
                        role = sonData.GetAttribute("role");
                    }
                }
            }
            return role;
        }

        /// <summary>
        /// 寫入日期
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPwd"></param>
        public void WriteData(string userName, string userPwd)
        {
            XmlDocument XMLDoc = new XmlDocument();
            XMLDoc.Load(filePath);//讀取XML文檔
            XmlNode xn = XMLDoc.SelectSingleNode("Users");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                if (xnf.Name == "User")
                {
                    XmlElement sonData = (XmlElement)xnf;
                    if (sonData.GetAttribute("name") == userName && sonData.GetAttribute("pwd") == userPwd)
                    {
                        sonData.SetAttribute("date", DateTime.Now.ToShortDateString());//設置為當前日期
                    }
                }
            }
            XMLDoc.Save(filePath);
        }

        /// <summary>
        /// 寫入時間值
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="userPwd"></param>
        public void WriteValue(string userName, string userPwd,string lastTime)
        {
            XmlDocument XMLDoc = new XmlDocument();
            XMLDoc.Load(filePath);//讀取XML文檔
            XmlNode xn = XMLDoc.SelectSingleNode("Users");
            XmlNodeList xnl = xn.ChildNodes;
            foreach (XmlNode xnf in xnl)
            {
                if (xnf.Name == "User")
                {
                    XmlElement sonData = (XmlElement)xnf;
                    if (sonData.GetAttribute("name") == userName && sonData.GetAttribute("pwd") == userPwd)
                    {
                        sonData.InnerText = lastTime;//設置剩余的時間值
                    }
                }
            }
            XMLDoc.Save(filePath);
        }
    }
}

 

主要界面(設置為不能在最小化任務欄顯示,並且隱藏主窗體,防止關閉,但可以在任務管理器關閉,所有必須禁用任務管理器)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;


namespace WINUSER
{
    public partial class Main : Form
    {
        public static Main main;
        public Main()
        {
            InitializeComponent();
            main = this;
        }

        /// <summary>
        /// 剩余的時間
        /// </summary>
        public static int lastTime = 14400;

        /// <summary>
        /// 當前登錄用戶的帳號,密碼
        /// </summary>
        public static string userName, userPwd;

        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Main_Load(object sender, EventArgs e)
        {
            //隱藏主窗體,防止用戶關閉
            this.Visible = false;
            this.WindowState = FormWindowState.Minimized;

            //設置為開機啟動,每次開機都自動運行該程序
            RegistryKey hkml = Registry.LocalMachine;
            RegistryKey runKey = hkml.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run", true);
            runKey.SetValue("WinUser", Application.StartupPath + "\\WINUSER.exe");
            runKey.Close();

            //打開用戶登錄
            Login login = new Login();
            login.ShowDialog();
        }


        /// <summary>
        /// 設定計時器
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            lastTime--;
            if (lastTime <= 0)
            {
                //關閉計時器
                timer1.Enabled = false;

                //重新登錄
                Login login = new Login();
                login.ShowDialog();
            }

            //保存當前剩余時間
            ControlXML cx = new ControlXML(Application.StartupPath + "\\User.xml");
            cx.WriteValue(userName, userPwd, lastTime.ToString());//設置新的上網時間值
        }
    }
}

 

登錄界面(需要禁用任務管理器)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;//

namespace WINUSER
{
    public partial class Login : Form
    {
        public Login()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 初始化
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Login_Load(object sender, EventArgs e)
        {
            //作為頂層窗口,和最大化窗口,屏蔽其他窗口
            this.TopMost = true;//頂層窗口
            this.WindowState = FormWindowState.Maximized;//最大化窗口

            //停用任務管理器,刪除該注冊表即可解除
            RegistryKey r = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
            r.SetValue("DisableTaskMgr", "1");  //屏蔽任務管理器 
        }

        /// <summary>
        /// 阻止程序關閉
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Login_FormClosing(object sender, FormClosingEventArgs e)
        {
            //防止意外關閉本窗口
            e.Cancel = true;//防止關閉窗口
        }

        /// <summary>
        /// 登錄
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            ControlXML cx = new ControlXML(Application.StartupPath + "\\User.xml");

            //如果用戶輸入成功登錄
            string value = cx.GetValue(comboBox1.Text, textBox1.Text);
            if (value != null && value != "")
            {
                //如果當前日期和保存日期不一致則說明是新的一天,刷新最后一次使用日期和新的上網時間值
                DateTime dt = cx.GetData(comboBox1.Text, textBox1.Text);
                if (DateTime.Now.ToShortDateString() != dt.ToShortDateString())
                {
                    cx.WriteData(comboBox1.Text, textBox1.Text);//設置新的日期值
                    cx.WriteValue(comboBox1.Text, textBox1.Text,"14400");//設置新的上網時間值為4小時
                }
                //獲取用戶規則如果為管理員則一天都可以上網
                string role = cx.GetRole(comboBox1.Text, textBox1.Text);
                if (role == "管理員")
                {
                    cx.WriteValue(comboBox1.Text, textBox1.Text, "86400");//設置新的上網時間值為24小時
                }
                //獲取上網時間值,並關閉本窗口
                Main.lastTime = int.Parse(cx.GetValue(comboBox1.Text, textBox1.Text));
                Main.userName = comboBox1.Text;
                Main.userPwd = textBox1.Text;
                this.Visible = false;

                //打開計時器
                Main .main .timer1.Enabled = true;
                MessageBox.Show("你還有" + Main.lastTime.ToString() + "秒的上網時間可用!");
            }
            else
            {
                MessageBox.Show("密碼錯誤!");
            }
        }

        /// <summary>
        /// 關機
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            WindowsExit.ExitWin();
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM