⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 os 课程设计不含文档 123456789
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace os
{
    public partial class Form1 : Form     
    {
        TreeNode c = new TreeNode("C");
        TreeNode d = new TreeNode("D");
        TreeNode dangqiannode = new TreeNode();
        disk disk_c = new disk();
        file file_ = new file();
        public process filepro;
        public process process_;
        public Int32 tt;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            process_ = new process(listView1, listView2, listView3, listView4, textBox6, textBox7, textBox8,label6);
            filepro = process_;

            //timer1.Enabled = true;
            inittreeview();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            tt++;
            this.label5.Text = Convert.ToString(tt);
            if (process_.ProCount > 0)
            
                process_.cpu_.CPU();
            
            textBox6.Text = process_.dqjch();
            textBox7.Text = process_.cpu_.dqzhl();
            textBox8.Text = process_.cpu_.zhjjg();
            label4.Text = disk_c.diskview(0);
            label3.Text = disk_c.diskview(1);
            label6.Text = Convert.ToString(process_.ram_.useramnum());
            label20.Text = Convert.ToString(512-process_.ram_.useramnum());
            label1.Text = process_.ram_.ramshow();
            
        }

        private void groupBox2_Enter(object sender, EventArgs e)
        {

        }
        private void inittreeview()//
        {
            treeView1.Nodes.Clear();
            c.Nodes.Clear();
            d.Nodes.Clear();
            dangqiannode.Nodes.Clear();
            //TreeNode dangqiannode = new TreeNode();
            c.ImageIndex = 1;
            c.SelectedImageIndex = 1;
            d.ImageIndex = 1;
            d.SelectedImageIndex = 1;
            treeView1.Nodes.Add(c);
            treeView1.Nodes.Add(d);
            disk_c.diskfilename = disk_c.diskfile[0];
            dangqiannode = c;
            diskshow(1);
            diskshow(2);
            disk_c.diskfilename = disk_c.diskfile[1];
            dangqiannode = d;
            diskshow(1);
            diskshow(2);
        }
        public void diskshow(int block)
        {
            disk_c.readblock1(block);
            for (int i = 0; i < 8; i++)
            {
                if (Convert.ToInt32(disk_c.buffer1[i * 16 + 15]) == 1)//如果是已经建成的fcb块,进行处理.预留的字节作为是否已经建成fcb的标志
                {
                    string[] fcb = new string[3];
                    fcb[0] = Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 0])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 1])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 2])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 3])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 4])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 5]));
                    fcb[0] = fcb[0].Trim();
                    fcb[1] = Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 6])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 7])) + Convert.ToString(Convert.ToChar(disk_c.buffer1[i * 16 + 8]));
                    fcb[1] = fcb[1].Trim();
                    fcb[2] = Convert.ToString(disk_c.buffer1[i * 16 + 9]);
                    dangqiannode.Nodes.Add(makenode(fcb[0], fcb[1], fcb[2]));
                }
            }
        }
        public TreeNode makenode(string name, string ename,string shuxing)
        {
            TreeNode mynode = new TreeNode();
            if (shuxing == "1")//是文件
            {
                mynode.Text = name;
                mynode.Text += ".";
                mynode.Text += ename;
                if (ename == "txt")//文本文件
                {
                    mynode.ImageIndex = 0;
                    mynode.SelectedImageIndex = 0;
                }
                else if (ename == "exe")//可执行
                {
                    mynode.SelectedImageIndex = 2;
                    mynode.ImageIndex = 2;
                }
                else//没有属性的文件
                {
                    mynode.SelectedImageIndex = 4;
                    mynode.ImageIndex = 4;
                }
            }
            else//目录
            {
                mynode.Text = name;
                mynode.ImageIndex = 3;
                mynode.SelectedImageIndex = 3;
            }
            return mynode;
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            textBox5.Text =  treeView1.SelectedNode.FullPath;
            file_.currentdir = textBox5.Text;
            //file objfile=new file();
            
            if (treeView1.SelectedNode.ImageIndex == 3)
            {
                string[,] tonode = file_.nodes();
                treeView1.SelectedNode.Nodes.Clear();
                for (int i = 0; i < tonode.Length / 3; i++)
                {
                    treeView1.SelectedNode.Nodes.Add(makenode(tonode[i, 0], tonode[i, 1], tonode[i, 2]));
                }
            }
        }

        private void treeView1_DoubleClick(object sender, EventArgs e)// 双击事件如果是可执行文件则运行他
        {
            if (treeView1.SelectedNode != null)
            {
                if (treeView1.SelectedNode.ImageIndex == 2)
                {
                    runpro();
                }
            }
        }

        private void 文本文件tsmi_Click(object sender, EventArgs e)
        {
            string txtname;
            createdlg objdlg = new createdlg();
            objdlg.InitDiaLog("新建文本文件", "请输入文本文件名(如:abc),最大长度6!");
            objdlg.ShowDialog();
            txtname = objdlg.Result;
            if (txtname.Length > 0)
            {
                if (txtname.Length > 6)
                {
                    MessageBox.Show("文件名长度超出,将只保留六位!");
                    txtname = txtname.Remove(6, txtname.Length - 6);
                }
                txtname = txtname + ".txt";
                file objfile = new file();
                objfile.currentdir = treeView1.SelectedNode.FullPath;
                objfile.createfile(txtname);             
            }
            inittreeview();
        }

        private void 运行tsmi_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode != null)
            {
                if (treeView1.SelectedNode.ImageIndex == 2)
                {
                    runpro();
                }
            }
        }
        private void runpro()//运行可执行文件
        {
            string buff = "";
            string[] buff1;
            string fullpath = treeView1.SelectedNode.Parent.FullPath;
            string filename = treeView1.SelectedNode.Text;
            file_.currentdir = fullpath;
            file_.readfile(filename, ref buff);
            buff1 = buff.Split('.');
            buff1[0] += ".";
            filepro.CreatPro(fullpath, filename, buff1[0]);
        }
        private void 编辑tsmi_Click(object sender, EventArgs e)
        {
            filediter objfe = new filediter();
            objfe.filename = treeView1.SelectedNode.Text;
            objfe.fullpath = treeView1.SelectedNode.Parent.FullPath;
            objfe.Show();
            //inittreeview();
        }

        private void 目录tsmi_Click(object sender, EventArgs e)
        {
            string dirname;
            createdlg objdlg = new createdlg();
            objdlg.InitDiaLog("新建目录", "请输入目录(如:abc),最大长度6!");
            objdlg.ShowDialog();
            dirname = objdlg.Result;
            if (dirname.Length > 0)
            {
                if (dirname.Length > 6)
                {
                    MessageBox.Show("文件名长度超出,将只保留六位!");
                    dirname = dirname.Remove(6, dirname.Length - 6);
                }
                file objfile = new file();
                objfile.currentdir = treeView1.SelectedNode.FullPath;
                objfile.createdir(dirname);
            }
            inittreeview();
        }

        private void 可执行文件tsmi_Click(object sender, EventArgs e)
        {
            string exename;
            createdlg objdlg = new createdlg();
            objdlg.InitDiaLog("新建可执行文件", "请输入可执行文件名(如:abc),最大长度6!");
            objdlg.ShowDialog();
            exename = objdlg.Result;
            if (exename.Length > 0)
            {
                if (exename.Length > 6)
                {
                    MessageBox.Show("文件名长度超出,将只保留六位!");
                    exename = exename.Remove(6, exename.Length - 6);
                }
                exename = exename + ".exe";
                file objfile = new file();
                objfile.currentdir = treeView1.SelectedNode.FullPath;
                objfile.createfile(exename);
            }
            inittreeview();
        }

        private void 刷新tsmi_Click(object sender, EventArgs e)
        {
            inittreeview();
        }

        private void 格式化tsmi_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("确实要格式化“" + treeView1.SelectedNode.Text + "盘”吗?", "确认格式化", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
                if (treeView1.SelectedNode.Text == "C")
                {
                    file_.formatc();
                }
                if (treeView1.SelectedNode.Text == "D")
                {
                    file_.formatd();
                }
                inittreeview();
            }
        }

        private void 删除tsmi_Click(object sender, EventArgs e)
        {
            if (treeView1.SelectedNode.SelectedImageIndex == 2 || treeView1.SelectedNode.SelectedImageIndex == 0 || treeView1.SelectedNode.SelectedImageIndex == 4)
            {
                if (MessageBox.Show("确实要删除文件“" + treeView1.SelectedNode.Text + "”吗?", "确认文件删除", MessageBoxButtons.OKCancel) == DialogResult.OK)
                {
                    file_.deletefile(treeView1.SelectedNode.Text);
                }
            }
            else if (treeView1.SelectedNode.SelectedImageIndex == 3)
            {
                int no = treeView1.SelectedNode.GetNodeCount(false);
                if (no != 0)
                {
                    if (MessageBox.Show("确实要删除文件夹“" + treeView1.SelectedNode.Text + "”及其中所有内容吗?", "确认文件夹删除", MessageBoxButtons.OKCancel) == DialogResult.OK)
                    {
                        MessageBox.Show("该目录不为空,功能尚未实现,不可删除!","提示");
                    }
                }
                else
                {
                    if (MessageBox.Show("确实要删除文件夹“" + treeView1.SelectedNode.Text + "”吗?", "确认文件夹删除", MessageBoxButtons.OKCancel) == DialogResult.OK)
                    {
                        file_.deletedir(treeView1.SelectedNode.Text);
                    }
                }
            }
            else if(treeView1.SelectedNode==null)
                MessageBox.Show("操作错误!");
            else
                MessageBox.Show("操作错误!");
           
            inittreeview();
        }

        private void 重命名tsmi_Click(object sender, EventArgs e)
        {
            inittreeview();
        }

        private void 属性tsmi_Click(object sender, EventArgs e)
        {
            inittreeview();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button3_Click(object sender, EventArgs e)//帮助,现在用来执行进程
        {
            filepro.CreatPro("c\a.exe", "a.exe", "x=1;x++;x++;x--;x--;x++;x--;x--;x++;x--;x--;x--;x++;x++;!A4;x--;end.");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (button2.Text == "王力飞")
                button2.Text = "作者";
            else
                button2.Text = "王力飞";
            filepro.CreatPro("c\a.exe", "b.exe", "x=3;!B3;x--;x--;end.");
        }

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(13))
            {
                file_.readcmd(textBox1.Text);
                inittreeview();
            }
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -