示例#1
0
        /// <summary>
        ///     Experimental function for monitoring active windows on your remote desktop (windows).
        /// </summary>
        /// <returns></returns>
        public void GetActiveWindowsImages()
        {
            var activeWindows = new List <WindowsImages>();

            foreach (var process in Process.GetProcesses().Where(process => process.MainWindowHandle != IntPtr.Zero))
            {
                RECT rc;
                GetWindowRect(process.MainWindowHandle, out rc);
                if (rc.Width <= 0)
                {
                    continue;
                }
                var bmp       = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
                var gfxBmp    = Graphics.FromImage(bmp);
                var hdcBitmap = gfxBmp.GetHdc();

                PrintWindow(process.MainWindowHandle, hdcBitmap, 0);

                gfxBmp.ReleaseHdc(hdcBitmap);
                gfxBmp.Dispose();
                var ms = new MemoryStream();
                bmp.Save(ms, ImageFormat.Png);
                var byteImage    = ms.ToArray();
                var base64Window = Convert.ToBase64String(byteImage); //Get Base64
                var image        = new WindowsImages
                {
                    imageData  = base64Window,
                    windowName = process.ProcessName
                };
                if (!AllOneColor(bmp))
                {
                    activeWindows.Add(image);
                }
            }
            serializator.Serialize(client, packet.endpoint, packet.syncKey, activeWindows);
        }
        /// <summary>
        ///     Experimental function for monitoring active windows on your remote desktop (windows).
        /// </summary>
        /// <returns></returns>
        public void GetActiveWindowsImages()
        {
            var activeWindows = new List<WindowsImages>();
            foreach (var process in Process.GetProcesses().Where(process => process.MainWindowHandle != IntPtr.Zero))
            {
                RECT rc;
                GetWindowRect(process.MainWindowHandle, out rc);
                if (rc.Width <= 0) continue;
                var bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
                var gfxBmp = Graphics.FromImage(bmp);
                var hdcBitmap = gfxBmp.GetHdc();

                PrintWindow(process.MainWindowHandle, hdcBitmap, 0);

                gfxBmp.ReleaseHdc(hdcBitmap);
                gfxBmp.Dispose();
                var ms = new MemoryStream();
                bmp.Save(ms, ImageFormat.Png);
                var byteImage = ms.ToArray();
                var base64Window = Convert.ToBase64String(byteImage); //Get Base64
                var image = new WindowsImages
                {
                    imageData = base64Window,
                    windowName = process.ProcessName
                };
                if (!AllOneColor(bmp))
                {
                    activeWindows.Add(image);
                }
            }
            serializator.Serialize(client, packet.endpoint, packet.syncKey, activeWindows);
        }