#c_sharp #winapi #net
Нужно программно перевести игру в полноэкранный режим и наоборот из полноэкранного
в оконный. Хэндл окна нахожу функцией FindWindowByCaption.
Если это возможно, покажите пожалуйста пример как это сделать. Спасибо.
P.s: сочетание клавиш Alt+Enter не срабатывает.
Перевести в полноэкранный режим у меня получилось так:
[DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);
[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
private static extern int SetWindowLong32(IntPtr hWnd, int nIndex, long dwNewLong);
[DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")]
private static extern IntPtr SetWindowLongPtr64(IntPtr hWnd, int nIndex, long dwNewLong);
public static IntPtr SetWindowLongPtr(IntPtr hWnd, int nIndex, long dwNewLong)
{
return IntPtr.Size == 8
? SetWindowLongPtr64(hWnd, nIndex, dwNewLong)
: new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong));
}
public static void SetWindowFullScreen(string windowName)
{
IntPtr hWnd = FindWindowByCaption(IntPtr.Zero, windowName);
SetWindowLongPtr(hWnd, GWL_STYLE, WS_POPUP);
SetWindowLongPtr(hWnd, GWL_EXSTYLE, WS_EX_TOPMOST);
ShowWindow(hWnd, SW_SHOWMAXIMIZED);
}
А вот из полноэкранного обратно в оконный не получается :(
Ответы
Ответ 1
Для такого рода задач существует утилита Spy ++ с помощью нее можете посмотреть значение окна и уже на основании этих данных производить поиск этого окна. Spy ++ идет в комплекте со студией Пример работы [пример]:http://www.pinvoke.net/default.aspx/user32.findwindowОтвет 2
Ваша ошибка в том, что вы устанавливаете свои значения стилей, полностью игнорируя изначальные значения. Обычно стили добавляют с помощью OriginalStyle |= ExtraStyle и удаляют с помощью OriginalStyle &= ~ExtraStyle. Это, так сказать, правило хорошего тона, чтобы ничего не испортить. Чтобы проделать эти операции, нужно сначала получить исходные значения. А чтобы восстановить исходные значения, нужно эти исходные значения сохранить. Так что вперёд и с песней к GetWindowLong.
Комментариев нет:
Отправить комментарий