Свернуть игру

Тема в разделе "WASM.BEGINNERS", создана пользователем JCronos, 29 апр 2009.

  1. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Здравствуйте

    Есть игра, которая не хочет сворачиваться, пишу утилиту которая по нажатию на горячую
    клавишу должна сворачивать и разворачивать окно, что посылать окну, что послать
    игре что-бы свернуть её? (Не в системный трей)
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Упрямое окно может намеренно хендлить все попытки его свернуть. Начни с ChangeDisplaySettings для восстановления десктоповского резолюшена.
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Можно попробовать
    SetWindowPos winHandle, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_HIDEWINDOW
     
  4. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    не, если там стоит флаг 4(не помню как он в дефайнах называется), то при сворачивании/закрытии оно автоматически ресторится.

    так что простейшие апи по минимайзу прекрасно подойдут.
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Опыт показывает, что самый рабочий способ закрыть назойливое приложение - это угадать Alt+Tab-ом где там Far, перейти в полноэкранный режим (Alt+Enter) и грохнуть процесс в панели процессов.
     
  6. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Спасибо всем попробую поочередно все методы, позже отпишусь...
     
  7. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Метод 1
    Код (Text):
    1. .data?
    2. lpDevMode  DEVMODE <>
    3. .code
    4. mov lpDevMode.dmSize, 0
    5. invoke ChangeDisplaySettings, addr lpDevMode, 0
    Правда на счет флага я не понял какой нужен

    Метод 2
    Код (Text):
    1.     invoke FindWindow, NULL, addr pszProcName
    2.     mov hWnd, eax
    3.     .if eax==NULL
    4.         invoke MessageBox,0,$TEXT("Coldnt find window!"),0,0
    5.         ret
    6.     .endif
    7.     invoke SetWindowPos, hWnd, 0, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE Or SWP_NOZORDER Or SWP_HIDEWINDOW
    При вызове игра просто выводит черное окно и виснет (кушает память)
     
  8. FatMoon

    FatMoon New Member

    Публикаций:
    0
    Регистрация:
    28 ноя 2002
    Сообщения:
    954
    Адрес:
    Russia
    пусть игра идет в полный экран на одном мониторе - а на втором будет рабочий стол, и запущенные необходимые приложения =) если это хорошо для вируса, почему плохо для мирного случая? А между десктопами можно потом переключаться, в том числе - горячими клавишами. Если я правильно понимаю, конечная цель вовсе не в том, чтобы иметь игру свернутой - а в том, чтобы получить доступ к другим окнам... АртМани, к примеру )) или отладчику...
     
  9. JCronos

    JCronos New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2009
    Сообщения:
    98
    Цель свернуть игру на время прочитать сообщение по асе, что на другом конце провода
    человек готов присоединится ко мне и что-бы мы начали играть :)
     
  10. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    :)
    Двое могут использовать TeamSpeak или Ventrilo.
     
  11. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    JCronos
    Если уверены, что это окно принадлежит игре, попробуйте спрятать его GetAncestor( ,GA_ROOT). Вполне вероятно, что спрятать понадобится несколько окон. Хотя далеко не факт, что поможет.