Я пытаюсь создать внутриигровой оверлей, используя Windows приложение Form на c# Мой код работает правильно в программах без полей, но не в полноэкранных программах.
Вот мой код:
RECT rect;
public const string WINDOW_NAME = "Game Name";
IntPtr handle = FindWindow(null, WINDOW_NAME);
public struct RECT
{
public int left, top, right, bottom;
}
[DllImport("user32.dll")]
static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
[DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowLong(IntPtr hWnd, int nIndex);
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool GetWindowRect(IntPtr hwnd, out RECT lpRect);
public Form()
{
InitializeComponent();
}
private void Form_Load(object sender, EventArgs e)
{
this.BackColor = Color.Wheat;
//this.TransparencyKey = Color.Wheat;
this.TopMost = true;
this.FormBorderStyle = FormBorderStyle.None;
int initialStyle = GetWindowLong(this.Handle, -20);
SetWindowLong(this.Handle, -20, initialStyle | 0x8000 | 0x20);
GetWindowRect(handle, out rect);
this.Size = new Size(rect.right - rect.left, rect.bottom - rect.top);
this.Top = rect.top;
this.Left = rect.left;
}
если кто-нибудь может мне помочь, я буду очень благодарен Спасибо