Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
18 / 18 / 6
Регистрация: 21.12.2011
Сообщений: 72
1
.NET 4.x

Программно перевести игру в полноэкранный режим и наоборот из полноэкранного в оконный

15.08.2014, 12:26. Показов 1550. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно программно перевести игру в полноэкранный режим и наоборот из полноэкранного в оконный. Хэндл окна нахожу функцией из WinAPI FindWindowByCaption.
Если это возможно, покажите пожалуйста пример как это сделать. Спасибо.
P.s: сочетание клавиш Alt+Enter не срабатывает.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2014, 12:26
Ответы с готовыми решениями:

Как программно перевести монитор в спящий режим?
Подскажите, как программно перевести монитор в спящий режим?

Сделать оконный режим из полноэкранного
У меня открыто приложение в полноэкранном режиме. Мне надо сделать так, чтобы оно стало в окне....

Как узнать, полноэкранный или оконный режим?
как средствами vba узнать полноэкранный или оконный режим? никак не могу найти свойство отвечающее...

Как открыть формы в полноэкранный или оконный режим?
Из главной формы необходимо открыть во весь экран Форму1. А из Формы1 на нажатие кнопки необходимо...

3
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
15.08.2014, 13:47 2
Должно сработать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices; 
 
namespace WINAPI
{
    
    public partial class Form1 : Form
    {
 
        [DllImport("user32.dll", EntryPoint = "FindWindow", SetLastError = true)]
        static extern IntPtr FindWindowByCaption(IntPtr ZeroOnly, string lpWindowName);
 
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
 
        const int SW_MAXIMIZE = 3;
        const int SW_RESTORE = 9;
        bool max = false;
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            IntPtr windowPtr = FindWindowByCaption(IntPtr.Zero, "имя окна с игрой");
            if (windowPtr == IntPtr.Zero)
            {
                MessageBox.Show("Window not found");
                return;
            }
            if (max)
            {
                ShowWindow(windowPtr, SW_RESTORE);
                    max=false;
            }
            else
            {
                ShowWindow(windowPtr, SW_MAXIMIZE);
                max = true;
            }
        }
    }
}
0
18 / 18 / 6
Регистрация: 21.12.2011
Сообщений: 72
15.08.2014, 15:34  [ТС] 3
es_, нет, это не совсем то что нужно. Ваш код просто разворачивает окно на весь экран, а не устанавливает полноэкранный режим.

Перевести в полноэкранный режим у меня получилось так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        [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);
        }
А вот из полноэкранного обратно в оконный не получается
Так не срабатывает:
C#
1
ShowWindow(windowPtr, SW_RESTORE);
0
217 / 216 / 114
Регистрация: 14.01.2013
Сообщений: 459
15.08.2014, 16:02 4
(( Проблема в том что у меня на обычных окнах всё работает, а игры вашей у меня нет. Мало ли какие ограничения установили разработчики игры на изменения окна..
Могу ещё предложить вариант с SetWindowPos В параметрах можно указать размер окна. Если Вы его, конечно не, пробовали..
0
15.08.2014, 16:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.08.2014, 16:02
Помогаю со студенческими работами здесь

Полноэкранный режим -> оконный режим
Нужно программно перевести игру из полноэкранного режима в оконный, пробовал программно нажать...

Перевести приложение в полноэкранный режим
Как сделать штоб окно програми било на целий екран как у игр

Перевести визуализацию WinAmp в полноэкранный режим
Как перевести визуализацию винампа в полноэкрнный режим? эмулирование alt+enter и даблклик почемуто...

Как можно в системе Windows XP перевести в оконный режим программу
подскажите мне, как можно в системе Windows XP перевести в оконный режим программу QBasic в ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru