Я пишу приложение 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. Также, чтобы мой пример работал, я создал собственный профиль в Терминале, который применяет уникальный заголовок к окну, чтобы его можно было найти позже. Возможности безграничны!
изменён 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» .
Выделение переднего плана в Gimp
Вынести на передний план AutoCAD
Теперь Control + Alt + F выведет ваше окно Firefox на передний план или запустит его, если оно еще не запущено.
Источник: poweruser.guru
Как вывести окно на передний план?
Нужно понятие, как вывести окно в Windows с определённым названием на передний план.
Конкретного, рабочего варианта тупо найдено не было на просторах интернета, либо плагины мёртвые, либо команды просто не работают.
Вот например мне надо переключиться на окно, в имени которого содержится «notepad», какой нужен скрипт для того, чтобы вывести это окно на передний план?
Это не работает:
hwnd = win32gui.FindWindow(None,»notepad») win32gui.ShowWindow(hwnd, win32con.SW_NORMAL) win32gui.SetForegroundWindow(hwnd)
- Вопрос задан более года назад
- 348 просмотров
Комментировать
Решения вопроса 1
Код рабочий. Другое дело если окна с именем «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, Ну простите. Куратор тега. Но сути это не меняет и не изменяет моей претензии к вам как и к тому как именно вы изменили моё сообщение.
В любом случае, я не просто так написал строчку в конце «Молю, дайте только полный скрипт а не обрывки (я пока не профессионал).» То не двусмысленно намекает, что если ты переходишь с других языков программирования, то такие строки как «import win32gui» и «# pip install win32gui» вырезать из скрипта и выкладывать сюда то что без них работать не будет, не стоит, а стоит их указывать перед самим скриптом. Такие строки, очевидно ТОЛЬКО для профессионалов программирования на языке Phyton, но не разу не очевидно для остальных языков и не очевидно для Новичков этого языка. Так что искренняя просьба, не править ключевые строки сообщения или хотя бы как то их согласовывать с тем кто их пишут (Автор вопроса).
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
- +1 ещё
Как сделать пагинацию в Django для итерируемых в шаблоне объектов?
- 1 подписчик
- час назад
- 15 просмотров
Источник: qna.habr.com