Конференция "Игры" » Запрет нажатия системных клавиш [Delphi, Windows]
 
  • ElectriC © (05.04.07 17:32) [0]
    Начал писать движок на WinAPI.
    Возник вопрос:
    Как запретить [Ctr]+[Alt]+[Del], [Alt]+[F4], [Alt]+[Tab], [Windows] и прочих системных клавиш - то бишь как это сделано в Quake III и прочих играх?
  • cyborg © (05.04.07 19:19) [1]
    Это обычно делают по причине глюкавости переключения чудо игры. В газенваген такие игры, которые не дают переключаться.
  • ElectriC © (05.04.07 20:22) [2]
    Окей! Значит Кармак создаёт кривые и глюченые движки;)))))

    Есть ещё вопрос:
    Как правильно отловить минимизацию окна?
    Ниже приведённый код не помогает:

    function WinProc(WinHan : THandle; Msg : UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
    begin
     Result := 0;

     case Msg of
       ...
       WM_SIZE    :
         If (wParam = SIZE_MAXHIDE) or (wParam = SIZE_MINIMIZED) then
            MessageBox(0,'1','My Engine',0) else MessageBox(0,'2','My Engine',0);
       ...
       else Result := DefWindowProc(WinHan, Msg, wParam, lParam);
     end;
    end;
  • Asteroid © (06.04.07 04:42) [3]
    Отлавливай WM_ACTIVATE.

    А насчет запретов - фтопку, фтопку.
    Лично меня еще не радуют игры без оконного режима :) Не говоря о тех, кто криво переключается в полноэкранный с меньшим разрешением (отчего все окна сдвигаются куда попало).
  • Мистер Т (06.04.07 12:27) [4]
    > ElectriC ©   (05.04.07 20:22) [2]
    > Окей! Значит Кармак создаёт кривые и глюченые движки;)))))

    Кармак не Бог, а значит не истина в последней инстанции.

    > Как запретить [Ctr]+[Alt]+[Del], [Alt]+[F4], [Alt]+[Tab],
    >  [Windows] и прочих системных клавиш - то бишь как это сделано
    > в Quake III и прочих играх?

    Почему-то в Q3 (и играх на его движке - CoD, RTCW и т.д.) у меня отлично сворачиваются/разварачиваются основное окно (реакция на Alt+Tab) и Ctrl+Alt+Del работает и прочая системщина. Что я не так делаю ?
  • homm © (06.04.07 12:32) [5]
    > Почему-то в Q3 (и играх на его движке - CoD, RTCW и т.д.)
    > у меня отлично сворачиваются/разварачиваются основное окно
    > (реакция на Alt+Tab) и Ctrl+Alt+Del работает и прочая системщина.
    > Что я не так делаю ?

    Не знаю что ты делааешь не так, но у меня в Q3 тоже не работет ничего.Фокус передается, а вот окно не сворачивается и с переднего планане уходит. приходится по панели задачь правой кнопкой, переместить, дальше стрльчками. Потом возвращаю :)
  • ElectriC © (06.04.07 14:12) [6]

    > Не знаю что ты делааешь не так, но у меня в Q3 тоже не работет
    > ничего.Фокус передается, а вот окно не сворачивается и с
    > переднего планане уходит. приходится по панели задачь правой
    > кнопкой, переместить, дальше стрльчками. Потом возвращаю
    > :)

    Вот-Вот!
    IMHO, лучше вообще запретить сворачивание и переключение между окнами,
    когда работает игра. Так надёжней, что-ли! Меньше ошибок и неполадок будет с программой!
  • homm © (06.04.07 14:15) [7]
    > IMHO, лучше вообще запретить сворачивание и переключение между окнами,
    > когда работает игра. Так надёжней, что-ли! Меньше ошибок
    > и неполадок будет с программой!

    А для увеличения безопасности на автодорогах, давайте выпускать машины без колес. А что-бы страну не захлестнуло пьянство, давайте запретим легальную алкогольную продукцию, и т.д.
  • Мистер Т (06.04.07 15:01) [8]
    > homm ©   (06.04.07 12:32) [5]
    > Фокус передается, а вот окно не сворачивается и с переднего
    > планане уходит.

    А, ну так-то да, такой трюк легко получается, если окно назначить "поверх всех окон", но ведь сочетание клавишь работает =)
    А вот в CoD - точно сворачивается после Alt+Tab, только что проверил.

    > ElectriC ©   (06.04.07 14:12) [6]
    > Вот-Вот!
    > IMHO, лучше вообще запретить сворачивание и переключение
    > между окнами,
    > когда работает игра. Так надёжней, что-ли! Меньше ошибок
    > и неполадок будет с программой!

    Убил бы за такое, ей Богу.
    Нужно нормально программы писать, а не изобретать велосипеды. Гораздо проще описать реакцию на сворачивание окна.
    Ну и плюсом, если у тебя игра повиснет (думаешь не зависнет, наивный ???), а ты Ctrl+Alt+Tab отключил, как думаешь, сколько ты минут/часов/дней потратишь на поиски ошибки перезагружая каждый раз компьютер ?

    > homm ©   (06.04.07 14:15) [7]
    > А что-бы страну не захлестнуло пьянство, давайте запретим
    > легальную алкогольную продукцию

    Кстати некоторые пытались =)
  • Мистер Т (06.04.07 15:02) [9]
    > Ctrl+Alt+Tab отключил
    читать Ctrl+Alt+Del

    сорри...
  • ElectriC © (06.04.07 22:28) [10]
    Хех)))
  • ElectriC © (07.04.07 14:25) [11]

    > Asteroid ©   (06.04.07 04:42) [3]
    > Отлавливай WM_ACTIVATE.

    А можно по подробней, а то не выходит что-то((
  • homm © (07.04.07 14:40) [12]
    >
    > А можно по подробней, а то не выходит что-то((

    Наиболее подробно в [8] начинается со слов «Убил бы за такое, ей Богу.»
  • ElectriC © (07.04.07 15:42) [13]

    > Гораздо проще описать реакцию на сворачивание окна.

    Подскажите, какой код хоть.
  • ElectriC © (08.04.07 15:39) [14]
    .
  • cyborg © (08.04.07 15:45) [15]
    Тебе все советуют не надо этого делать, но ты почему-то настойчиво пытаешься это реализовать. Лучше глюки поищи и исправь в своей игре, чтобы такими способами их скрывать не приходилось.
  • ElectriC © (08.04.07 17:04) [16]
    Так я спрашиваю про то, как ОТЛОВИТЬ РЕАКЦИЮ СВОРАЧИВАНИЯ(а не как запретить), какой код вообще надо использовать!
  • ElectriC © (08.04.07 17:05) [17]
    .
  • ElectriC © (08.04.07 19:25) [18]
    ,
 
Конференция "Игры" » Запрет нажатия системных клавиш [Delphi, Windows]
Есть новые Нет новых   [134430   +43][b:0][p:0.001]