c# Игровой оверлей не работает в полноэкранном приложении - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь создать внутриигровой оверлей, используя 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;
}

если кто-нибудь может мне помочь, я буду очень благодарен Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...