📄 form1.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 + -