Как вывести программу на передний план

Я пишу приложение Windows Forms в С#. Мне нужно уметь вывести его на передний план. После некоторого Googling и экспериментов у меня есть рабочее решение, которое выглядит довольно взломанным. Я хотел бы знать элегантный способ сделать это, если он есть. Мне нужно приложение для восстановления и выйти на передний план, было ли оно сведено к минимуму или не сведено к минимуму, но в фоновом режиме. Текущий код выглядит следующим образом:

WindowState = FormWindowState.Minimized; WindowState = FormWindowState.Normal; BringToFront(); Focus();
RedFilter 23 сен. 2009, в 03:28
Поделиться
С аудиозаписью Эмериля Лагасса! BAM!
Ben M 23 сен. 2009, в 01:04

Хорошо, после некоторого поиска в Google, я думаю, что это смешно.
RedFilter 23 сен. 2009, в 01:10

Обычно я ненавижу людей, которые говорят подобные вещи, но серьезно, пожалуйста, не заставляйте свое приложение делать это, если у вас нет права голоса в этом вопросе. Приложения, которые крадут фокус, должны считаться вредными.

Coxy 23 сен. 2009, в 01:25
RedFilter 23 сен. 2009, в 01:30

Я обновил свой ответ; Я думаю, что форма. Активация плюс установка состояния окна дает вам то, что вы просите.

Источник: overcoder.net

Пользовательские горячие клавиши / ярлыки для открытия / вывода на передний план приложения

Я не думаю, что это встроено в систему, но возможно ли это сделать без особых хлопот? Скажем, я открываю определенную программу с помощью горячей клавиши, и когда я снова нажимаю эту горячую клавишу, окно программы переносится на передний план. Я хочу сделать это на Ubuntu 9.04. Может быть, с D-Bus? Есть эксперты? Обновление: вот что я получил в случае, если это кому-нибудь поможет:

Конечно, это можно упростить, но я не bash Wiz. Также, чтобы мой пример работал, я создал собственный профиль в Терминале, который применяет уникальный заголовок к окну, чтобы его можно было найти позже. Возможности безграничны!

Читайте также:
Что делает программа cmd exe

изменён Ivan 2k
задан Ivan 2k

3 ответа 3

Программа wmctrl именно то, что вы ищете ( sudo apt-get install wmctrl ). Вы можете использовать команду wmctrl -a «AppTitle» чтобы вывести приложение на передний план . wmctrl -l выведет список всех доступных окон, поэтому должно быть легко написать сценарий оболочки, который проверяет, запущена ли ваша программа, и запускает ее или выводит на передний план. Затем вы можете просто привязать это к сочетанию клавиш. Сначала сохраните где-нибудь следующий скрипт, я буду использовать /home/jtb/code/bringToFront . Он принимает два аргумента: первый — то, что вы вводите в терминале для запуска программы, второй — подстрока заголовка окна программы. Если в заголовке нет постоянной уникальной строки, вам нужно проделать немного больше работы, чтобы найти окно программы.

#!/bin/bash if [ `wmctrl -l | grep -c «$2″` != 0 ] then wmctrl -a «$2» else $1 чтобы запустить / сфокусировать Firefox, вы можете запустить ./bringToFront firefox «Mozilla Firefox» .

  • Теперь нам нужно привязать сочетание клавиш. Запустите gconf-editor и перейдите в левую структуру папок к /apps/metacity/keybinding_commands .
  • Дважды щелкните первую command с пустым значением, вероятно, command_1 . Введите полный путь к сценарию и укажите два параметра, например /home/jtb/code/bringToFront firefox Firefox .
  • На панели слева выберите global_keybindings , следующая папка вверх. Найдите запись run соответствующую только что определенной вами команде, вероятно, run_command_1 . Дважды щелкните по нему и введите сочетание клавиш, которое вы хотите использовать. Поместите модификаторы в угловые скобки, например F
  • Выделение переднего плана в Gimp

    Вынести на передний план AutoCAD

    Теперь Control + Alt + F выведет ваше окно Firefox на передний план или запустит его, если оно еще не запущено.

    Источник: poweruser.guru

    Как вывести окно на передний план?

    Нужно понятие, как вывести окно в Windows с определённым названием на передний план.
    Конкретного, рабочего варианта тупо найдено не было на просторах интернета, либо плагины мёртвые, либо команды просто не работают.
    Вот например мне надо переключиться на окно, в имени которого содержится «notepad», какой нужен скрипт для того, чтобы вывести это окно на передний план?

    Читайте также:
    Имена программ с расширением txt

    Это не работает:

    hwnd = win32gui.FindWindow(None,»notepad») win32gui.ShowWindow(hwnd, win32con.SW_NORMAL) win32gui.SetForegroundWindow(hwnd)

    • Вопрос задан более года назад
    • 348 просмотров

    Комментировать
    Решения вопроса 1

    SoreMix

    Код рабочий. Другое дело если окна с именем «notepad» нет.

    Можно перебрать все окна и найти те, в которых есть «notepad»

    def enum_handler(hwnd, ctx): if win32gui.IsWindowVisible(hwnd): if ‘notepad’ in win32gui.GetWindowText(hwnd): win32gui.SetForegroundWindow(hwnd) win32gui.EnumWindows(enum_handler, None)
    Ответ написан более года назад
    Нравится 1 7 комментариев

    Я создал файл .txt с названием «notepad.txt», открыл его в «notepad», не тот и не другой вариант не работают.

    Ваш вариант, не работает, пишет:
    File «», line 1, in
    File «C:PythonPyCharm Community Edition 2021.1.1pluginspython-cehelperspydev_pydev_bundlepydev_umd.py», line 198, in runfile
    pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
    File «C:PythonPyCharm Community Edition 2021.1.1pluginspython-cehelperspydev_pydev_imps_pydev_execfile.py», line 18, in execfile
    exec(compile(contents+»n», file, ‘exec’), glob, loc)

    Неужели нету команды, которая просто переключает окно на передний экран. Мне не нужны там ID окон, специальные их hWND номера, или я что то не так делаю и не так понимаю?

    Спасибо вам огромное вот это работает:

    import win32gui def enum_handler(hwnd, ctx): if win32gui.IsWindowVisible(hwnd): if ‘ИМЯ_Окна’ in win32gui.GetWindowText(hwnd): win32gui.SetForegroundWindow(hwnd) win32gui.EnumWindows(enum_handler, None)

    Просто я просил о том что бы указали весь скрипт, но модератор Zettabyte отредактировал моё сообщение удалив важную по сути строчку-просьбу, из за чего вы не полностью указали скрипт. Огромное вам спасибо ещё раз!

    SoreMix

    модератор soremix отредактировал моё сообщение удалив важную по сути строчку-просьбу, из за чего вы не полностью указали скрипт

    Первый раз слышу о том, что я модератор и могу редактировать чужие сообщения без разрешения пользователей.

    soremix, Ну простите. Куратор тега. Но сути это не меняет и не изменяет моей претензии к вам как и к тому как именно вы изменили моё сообщение.

    В любом случае, я не просто так написал строчку в конце «Молю, дайте только полный скрипт а не обрывки (я пока не профессионал).» То не двусмысленно намекает, что если ты переходишь с других языков программирования, то такие строки как «import win32gui» и «# pip install win32gui» вырезать из скрипта и выкладывать сюда то что без них работать не будет, не стоит, а стоит их указывать перед самим скриптом. Такие строки, очевидно ТОЛЬКО для профессионалов программирования на языке Phyton, но не разу не очевидно для остальных языков и не очевидно для Новичков этого языка. Так что искренняя просьба, не править ключевые строки сообщения или хотя бы как то их согласовывать с тем кто их пишут (Автор вопроса).

    Читайте также:
    Компьютер не открывает программы с рабочего стола

    SoreMix

    Ermac301, ещё раз повторю: у меня нет прав на редактирование сообщений. И честно говоря сомневаюсь что модераторы могут это делать, а даже если и могут, зачем им вырезать вашу важную информацию?

    именно вы изменили моё сообщение

    У вас какое-то уведомление пришло что я вырезал нужную информацию? Или на чем эта догадка

    Оу. Прошу прощения. Не тот никнейм скопировал в сообщении. Вот виновник недопонимания Zettabyte
    К вам претензий ноль. К вам только искренняя благодарность за помощь. А вот Zettabyte отредактировал моё сообщение удалив просьбу «указать весь скрипт а не вырезки».

    Вот хорошо работающий вариант с окнами Win, он сворачивает и разворачивает окно, что хорошо работает с Windows 10 и моложе:

    # pip install win32gui import win32gui import win32con имя_окна_01 = ‘Test.txt’ #Сюда вписать имя окна def enumHandler(hwnd, ctx): # Свернуть окно if имя_окна_01 in win32gui.GetWindowText(hwnd): win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE) # sleep(0.5) # Ожидание win32gui.EnumWindows(enumHandler, None) def enumHandler(hwnd, ctx): # Развернуть окно if имя_окна_01 in win32gui.GetWindowText(hwnd): win32gui.ShowWindow(hwnd, win32con.SW_MAXIMIZE) # SW_MAXIMIZE # sleep(0.5) # Ожидание win32gui.EnumWindows(enumHandler, None) def enum_handler(hwnd, ctx): # На передний план if win32gui.IsWindowVisible(hwnd): if имя_окна_01 in win32gui.GetWindowText(hwnd): win32gui.SetForegroundWindow(hwnd) win32gui.EnumWindows(enumHandler, None)
    Ответы на вопрос 1
    Вот нашёл такие команды, но они открывают файл:
    #Найти и запустить приложение (программу) from pywinauto.application import Application app = Application(backend=»uia»).start(«notepad.exe»)

    Это не совсем что нужно, мне нужно уже открытое окно вывести на передний план.

    Ответ написан более года назад
    Комментировать
    Нравится Комментировать
    Ваш ответ на вопрос

    Войдите, чтобы написать ответ

    python

    • Python
    • +1 ещё

    Как сделать пагинацию в Django для итерируемых в шаблоне объектов?

    • 1 подписчик
    • час назад
    • 15 просмотров

    Источник: qna.habr.com

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru