我打开软件后可以获得这个局域网内所有的机器`  可是随便的选择监控哪台机器` 不是抓图 而在我看他的机器的时候不能被他查觉到` 也可以这样`  只要机器上装上这个软件了`就可以监控  做到能穿墙不被他们发现`  像老师讲课用的那种一样`~只不过是反过来了`  不是别人看我是我看别人`~ 希望大家给点意件`~给点思路`  谢谢了

解决方案 »

  1.   

    有一种“桌面网管系统”就是你说的这种东西,不是简简单单就可以做出来的,涉及很多东西。不管怎么实现你在被控机器上要装客户端,你可以试下dameware远程控制软件
      

  2.   

    我黑啥呀~  这是软件的一个功能  我要是黑客就好了`  
    我是在写一个软件`~  假如这个局域网内机器都装上了我这个软件了` 我就可以做到了吧  现在我可以从别人的机器上截图  就是说把它当前屏幕的图片给弄下来传到我的机子上`~  如果要实现监控的话要不停的读然后把这些图片放到picturebox里面` 有新的了就换掉`这样就例似监控了吧`现在的问题是` 我如何让它连接起来啊 每次我看完一个人的机器后都会保留下一张图来`~有点郁闷`还有就是我如何获得这个局域网内有哪些机子呢  他们都装上了这个软件后我又怎么选择去监控哪一个呢   期待高手出现
      

  3.   

    我用C#做过一个内网交流软件,可以发现内网中所有装了本软件的机器,可以和对方聊天,相互发送文件,可能对你有所帮助。需要的话给我发个邮件
    [email protected]
      

  4.   

    Graphics的CopyFromScreen方法可以捕捉屏幕,再用套接字上传到控制端
      

  5.   

    DameWare和赛门铁克的PcAnywhere这样的远程控制软件都必须在被控端安装客户端.楼主要做到不被发现.很难
      

  6.   

    remoteanywhere也可以,控制端是用网页打开的
      

  7.   

    1. 使用DotNet的Remoting或Socket做通信方面的,你的客户端做成主动连接服务器,这样你的服务器就知道哪些机器安装了你的软件并可以进行你想要的操作(什么截图上传,通信等等)
    2. 至于图片不如做成上传到服务器(如果用DotNet的Remoting还可以上传一个对象,然后具体的图片在你的服务端生成.这样你连删除上次的图片都省下了.)的某一位置,然后你服务器的图片处理程序就监视该文件夹/或者文件,只要发生了变化就马上触发你想要运行的函数
    是不是想做成这样?
      

  8.   

    这样说吧 :比如我开了一家公司,我是老板`所有的机器都从一个交换机上分线上网, 但是我发现现在有的员工不好好干活老是打游戏,可是公司很大我又不是一个一个的看~太累~  所以我就想弄一个监控的软件,当我打开软件的时候,有三个个按钮,1、查看当前在线机器,2、监控,3、发送信息  我打开软件点查看当前在线主机的时候它会把我这个公司所有开机并连网的机器的IP 和MAC 地址  都放到一个listbox里面`~  当我选中其中的一个并点击监控的时候  就可以看对应IP机器在做什么了`就像我看电视一样~  这会儿我想告诉他好好干活,要不然就开了他,所以我打点了发送信息这个按钮`输入:速度干活!  在它的屏幕上就会以对话框的形式弹出这几个字(和messagebox.show()效果一样),开始打算用net send发送`  可是如果人家机器关掉了那个服务就不行了~  所以上面的操作都是建立在局域网内的机器上都装上客户端的前提下进行的  小弟不才,不知道说明白了没有`   还有我才发现了一个问题:用socket完成通信的话会有一个server端和一个client端`  这是两个程序吗?那是server端是不是就是一个中介性质的软件啊~都得先经过它才行呢?
      

  9.   

    难道就像windows自带的mstsc一样,在后台操作?
    要不你在前台操作,人家怎么不会发现?除非他关了显示器....
      

  10.   

    楼主想法太简单,比如你认为netsend会在服务被关的情况下不能用,那么你现在需要安装客户端程序,客户端程序就不会被关吗?
    如果你现在是老板,需要给员工一部分的空间,如果一直在被监视的状态下工作,能有好的效率吗
    你如果真要实现可以现了解一下socket,看你现在的状态是对server、client不太了解。
    我主要关注你这个想法的实用性
      

  11.   

    //写一个监控接收数据的方法 
    public void getRemote() 
             { 
                 IPAddress ip = IPAddress.Parse("192.168.1.3");   
                 tcp = new TcpListener(ip,9420); 
                 tcp.Start(); 
                 socket = tcp.AcceptSocket(); 
                 ns = new NetworkStream(socket); 
                 sr = new StreamReader(ns); 
                 sw = new StreamWriter(ns); 
                 if (socket.Connected) 
                 {                  try 
                     { 
                         while (true) 
                         { 
                         
                             byte[] b = new byte[1024*256];   //设置接收的大小 
                             int i = this.socket.Receive(b);//接收 
                        //把byte[]转化成内存流,在把内存流转化成Image, 
                       System.Drawing.Image myimage = System.Drawing.Image.FromStream(new MemoryStream(b)); 
                             showScreen.Image = myimage; //显示 
                         } 
                     
                     } 
                     catch (Exception ex) 
                     { 
                         this.tcp.Stop(); 
                         MessageBox.Show("捕捉屏幕出错!server"+ex.Message); 
                     } 
                 } 
             } 
    //在加载事件中启动线程 
                 tcpThread = new Thread(new ThreadStart(getRemote)); 
                 tcpThread.Start(); 服务端: 
    //using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Text; 
    using System.Windows.Forms; 
    using System.Net.Sockets; 
    using System.Threading; 
    using System.Net; 
    using System.IO; 
    namespace THClient 

         public partial class Form1 : Form 
         { 
         //     private Socket socket = null; 
             private NetworkStream ns = null; 
             private StreamReader sr = null; 
             private StreamWriter sw = null; 
             private Thread tcpThread = null; 
             private TcpClient tcpclient = null; 
             MemoryStream ms = null; 
             bool isCon = false; 
             bool isError = false; 
             
             
             public Form1() 
             { 
                 InitializeComponent(); 
           
             } 
           
         
             [System.Runtime.InteropServices.DllImport("gdi32.dll")] 
             private static extern IntPtr CreateDC( 
                   string lpszDriver, // 驱动名称 
                   string lpszDevice, // 设备名称 
                   string lpszOutput, // 无用,可以设定位"NULL" 
                   IntPtr lpInitData // 任意的打印机数据 
                 ); 
             [System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")] 
             private static extern bool BitBlt( 
             IntPtr hdcDest, //目标设备的句柄 
             int nXDest, // 目标对象的左上角的X坐标 
             int nYDest, // 目标对象的左上角的X坐标 
             int nWidth, // 目标对象的矩形的宽度 
             int nHeight, // 目标对象的矩形的长度 
             IntPtr hdcSrc, // 源设备的句柄 
             int nXSrc, // 源对象的左上角的X坐标 
             int nYSrc, // 源对象的左上角的X坐标 
             System.Int32 dwRop // 光栅的操作值 
             ); 
             public void capture() 
             { 
                 //this.Visible = false; 
                 IntPtr dc1 = CreateDC("DISPLAY", null, null, (IntPtr)null); 
                 //创建显示器的DC 
                 Graphics g1 = Graphics.FromHdc(dc1); 
                 //由一个指定设备的句柄创建一个新的Graphics对象 
                 System.Drawing.Image MyImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, g1); 
                 //根据屏幕大小创建一个与之相同大小的Bitmap对象 
                 Graphics g2 = Graphics.FromImage(MyImage); 
                 //获得屏幕的句柄 
                 IntPtr dc3 = g1.GetHdc(); 
                 //获得位图的句柄 
                 IntPtr dc2 = g2.GetHdc(); 
                 //把当前屏幕捕获到位图对象中 
                 BitBlt(dc2, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, dc3, 0, 0, 13369376); 
                 //把当前屏幕拷贝到位图中 
                 g1.ReleaseHdc(dc3); 
                 //释放屏幕句柄 
                 g2.ReleaseHdc(dc2); 
                 //释放位图句柄 
                 ms = new MemoryStream(); 
                 MyImage.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); 
                 byte[] b =ms.GetBuffer(); 
                 ns.Write(b, 0, b.Length); 
                 ms.Flush(); 
                // this.pictureBox1.Image = Image.FromStream(ms); 
                 //this.Visible = true; 
                 
               
             } 
             private void Form1_Load(object sender, EventArgs e) 
             { 
                 this.label1.Text = "程序启动中....\r\n"; 
                 timer1.Enabled = true; 
             } 
             public void connect() 
             { 
                  try 
                 { 
                     
                      while (true) 
                     { 
                        capture(); 
                     } 
                   
                 } 
                 catch(Exception ex) 
                 { 
                   //   MessageBox.Show(ex.Message); 
                   //   MessageBox.Show("错误!===\\\\"+ex.Message ); 
                     sw.Dispose(); 
                     sr.Dispose(); 
                     ns.Dispose(); 
                     isCon = false; 
                     isError = false; 
                     timer1.Enabled = true; 
                     this.label1.Text += "远程主机被断开~!"; 
                 } 
             } 
             //关闭所有流 
             private void Form1_Closing(object sender,System.ComponentModel.CancelEventArgs e) 
             { 
               
             } 
             private void timer1_Tick(object sender, EventArgs e) 
             { 
                 if (!isCon) 
                 { 
                    con(); 
                    if (!isError) 
                    { 
                     timer1.Enabled = false; 
                    tcpThread = new Thread(new ThreadStart(connect)); 
                    tcpThread.Start(); 
                   
                    } 
                    isError = false; 
                 } 
             } 
             public void con() 
             { 
                 try 
                 { 
                     this.label1.Text += "连接中.....\r\n"; 
                     tcpclient = new TcpClient(); 
                     tcpclient.Connect("192.168.1.3", 9420); 
                     if (tcpclient.Connected) 
                     { 
                         ns = tcpclient.GetStream(); 
                         sr = new StreamReader(ns); 
                         sw = new StreamWriter(ns); 
                         isCon = true; 
                         this.label1.Text += "连接成功\r\n"; 
                     } 
                     //isError = true; 
                 } 
                 catch 
                 { 
                     isError= true; 
                     this.label1.Text += "连接失败!\r\n"; 
                 } 
             }      }