#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.
Комментариев нет:
Отправить комментарий