Обновлено: 22.11.2024
Автопредложение помогает быстро сузить результаты поиска, предлагая возможные совпадения по мере ввода.
Получить имя приложения через Windows API или другой источник
Получить имя приложения через Windows API или другой источник
04.09.2020 15:10
- Отметить как новое
- Добавить в закладки
- Подписаться
- Отключить звук
- Отправить сообщение другу
Я создал небольшую программу, которая обращается к Windows API и возвращает заголовок активного окна. Это работает нормально, так как я могу проанализировать суффикс строки заголовка окна, который он возвращает, и использовать таблицу поиска, чтобы сказать мне, какая программа запущена.
Я хочу сделать еще один шаг вперед. Я хочу вернуть запущенное приложение вместо заголовка окна. Я добавил GetWindowThreadProcessID, который, я думаю, возвращает идентификатор потока активного окна.
Исходя из этого, есть ли способ вернуть имя приложения на основе идентификатора окна? Я не очень хорошо разбираюсь в Windows API, но мне интересно, сталкивался ли кто-нибудь с этим раньше и, возможно, нашел способ получить эту информацию.
07.09.2020 23:30
- Отметить как новое
- Добавить в закладки
- Подписаться
- Отключить звук
- Отправить сообщение другу
- Отметить как новое
- Добавить в закладки
- Подписаться
- Отключить звук
- Отправить сообщение другу
Раньше я писал что-то подобное, в котором для получения заголовков окон использовалась команда tasklist из командной строки. Это фильтрует все запущенные задачи по имени исполняемого файла, но, судя по всему, есть фильтр PID, который вместо этого позволит вам фильтровать по идентификатору процесса.
wiebe@CARYA
- Отметить как новое
- Добавить в закладки
- Подписаться
- Отключить звук
- Отправить сообщение другу
Если вам просто нужно название текущего приложения:
Какова ваша конечная цель?
- Отметить как новое
- Добавить в закладки
- Подписаться
- Отключить звук
- Отправить сообщение другу
Я думал использовать ваш пример, но не думаю, что это так просто.
Моя конечная цель – выяснить, какое приложение используется для запуска указанного окна, и оно вернет LabVIEW, Excel, Access и т. д.
Например, если открыта книга Excel и вы запустите мой пример, вы получите то, что (я думаю) является ProcessID для этой книги. Я думал, что смогу использовать это для поиска PID в диспетчере задач, но когда я это сделал, я не смог найти этот конкретный идентификатор процесса. Это должен быть идентификатор дочернего окна.
Я хочу, чтобы он сообщал мне, какое приложение используется для запуска этой книги, чтобы он возвращал Excel (или Microsoft Excel). В настоящее время он дает мне имя активной книги.
Или, на самом деле, мне нужно получить одно конкретное имя окна, принадлежащее процессу "notepad.exe".
Спасибо за помощь :)
Хотя мой ответ работает, вероятно, проще использовать что-то вроде Spy++ или Winspy, если вам нужно проверить только один раз, в зависимости от того, что вам нужно с этим делать, конечно: p
Какую проблему вы пытаетесь решить, где, по вашему мнению, поможет получение заголовка окна блокнота? Название не является частью API и может измениться в любое время. Действительно, в прошлом он менялся как минимум один раз.
3 ответа 3
Я не думаю, что есть более простой способ использования необработанного winapi, но вот что:
- Используйте API Toolhelp32, чтобы получить список идентификаторов процессов, имена исполняемых файлов которых совпадают с "notepad.exe".
- Пронумеруйте окна, чтобы найти окна, чей PID соответствует единице в списке.
- Возьмите заголовок этого окна и делайте с ним, что хотите.
Вот код, который я придумал:
По порядку:
Сначала обратите внимание на широкие версии функций и строк. TCHAR не подходит для использования, и было бы обидно, если бы в одном из заголовков оказалась кодировка UTF-16.
isNotepad просто проверяет имя исполняемого файла в структуре PROCESSENTRY32W, чтобы определить, равно ли оно "notepad.exe". Это предполагает, что Блокнот использует это имя процесса, и ничто, кроме Блокнота, не использует имя процесса. Чтобы исключить ложные срабатывания, вам придется проводить дополнительные проверки, но никогда нельзя быть полностью уверенным.
В enumWindowsProc обратите внимание, что lParam на самом деле является указателем на вектор PID (чтобы избавить себя от необходимости использовать глобальный). Это составляет приведение в начале функции. Далее получаем PID найденного окна. Затем мы проходим по списку переданных PID и проверяем, совпадает ли он с каким-либо из них. Если это так, я решил взять заголовок и вывести PID и заголовок окна. Обратите внимание, что использование стандартной строки в качестве буфера гарантированно работает только в C++11 и не должно перезаписывать лишний нулевой символ (не являющийся частью длины). Наконец, мы возвращаем TRUE, чтобы он продолжал перечисление, пока не пройдет все окна верхнего уровня.
Первое, что вы видите на main , это изначально пустой список PID. Делаем снимок процессов и проходим по ним. Мы используем вспомогательную функцию isNotepad, чтобы проверить, является ли процесс «notepad.exe», и если да, то сохранить его PID. Наконец, мы вызываем EnumWindows для перечисления окон и передаем список PID, замаскированный под необходимый LPARAM.
Это немного сложно, если вы еще не делали подобных вещей, но я надеюсь, что это имеет смысл. Если вам нужны дочерние окна, правильно было бы добавить EnumChildWindowsProc и вызвать EnumChildWindows с ним в том месте, где я вывожу информацию о найденном окне. Если я прав, вам не нужно рекурсивно вызывать EnumChildWindows для получения внуков и т. д., поскольку они будут включены в первый вызов.
Как отобразить имя программы на панели задач Windows 10 (название, значки)?
Полный путь к папке легко увидеть в строке заголовка ms-file-explorer, например, в Windows-10, чтобы лучше распознавать текущий каталог в проводнике!
Информация:
Как отобразить имя программы в новой Windows 10 на панели задач — это вопрос многих пользователей Windows, и послушайте ответ на этот очень важный вопрос, прежде чем настраивать лучшую панель задач операционной системы Windows от Microsoft. когда-либо на вашем персональном компьютере. Что бы это ни было: Windows 10 или Windows Web Server 2016 и 2012! �
3.) Старое решение: показывать заголовок окна на панели задач в Windows-10!
Если вы хотите отобразить заголовок окна (заголовок) на панели задач (панели инструментов) Windows-10, щелкните правой кнопкой мыши пустое место на панели задач Windows-10 и установите для кнопок панели задач значение «Никогда». комбинируйте!�
(. см. изображение 3, стрелки 1–3)
(Image-3)�Показать заголовок окна�на панели задач Windows 10! |
< td align="center">
Вы также можете закрепить программу, перетащив ее ярлык с рабочего стола или из меню "Пуск" на панель задач Windows-10. Кроме того, если вы перетащите ярлык файла, папки или веб-сайта на панель задач, а соответствующая программа еще не закреплена там, то эта программа будет закреплена на панели задач Windows-10, а элемент будет прикреплен к программе� s Список переходов для Windows-10.
Изменить домашнюю папку MS-Explorer в Windows 10/11 (на Мой компьютер, Этот компьютер)!
Измените домашнюю папку MS-Explorer на This-PC My-Computer, пример решения для Windows 10 1. Изменение папки Star в проводнике
Показать полный путь в строке заголовка проводника в Windows 10/11!
Чтобы отобразить полный путь в строке заголовка проводника в Windows 10/11, решение очень простое, и его также можно реализовать для начинающих пользователей Windows 1.
Диалоговое окно «Выполнить-команда» в Windows 10/11 с помощью ярлыка на рабочем столе?
Чтобы создать ярлык на рабочем столе для команды «Выполнить-Диалог» на рабочем столе Windows 10 и 11 для быстрого доступа к командам «Выполнить» 1. Создайте Рабочий стол «Выполнить-Диалог»
< /p>
Настройки гибернации Windows 10 / 11 (выключить, включить, отключить)?
Чтобы изменить настройки режима гибернации в Windows 11 и 10, выключите, включите или полностью отключите его, если необходимо. Простое отключение или перевод в режим гибернации в Windows
Выключение - Перезагрузка ярлыка Windows 11, 10, как создать?
Вот пример создания ярлыка «Выключение» или «Перезагрузка» для Windows 10, 11, , например, на рабочем столе Windows 11 или 10. 1. Создание
Windows 10/11: сменить ключ продукта для новой активации Win-10, как это сделать?
Измените ключ активации Windows 10 или 11, чтобы активировать Win 10/11, или активируйте Windows 10 и 11 в автономном режиме по номеру телефона бесплатно через телефонную систему��
Где MS Paint в Windows 10 / 11, как найти, запустить, запустить?
Найдите и откройте MS-Paint для Windows 10 и 11 или создайте ярлык на рабочем столе для приложения Paint на рабочем столе Windows 10 1. Запустите ms-paint с помощью команды «Выполнить»
- Где находится icon.exe программ Windows в Windows 10?
- Названия элементов на панели задач?
- Загрузить значок программ Microsoft Windows для Windows 10 и значок ярлыка для программ Windows в Windows 10?
- Где находится значок программы Microsoft Windows в окне 10?
- Где найти значок программы Windows в Windows 10?
- Сочетание клавиш для значка программ Windows в Windows 10?
- Значок программ Windows в Windows 10?
- Не можете найти значок программы Windows в Windows 10?
- Как получить доступ к значку программ Windows в Windows 10?
- Скачать бесплатно значок программ Windows Windows для Windows 10?
- Как найти значок программы Windows в Windows 10?
- Программа значков программ Windows для Windows 10?
- Как показать значок программы Windows 10?
- Где находится значок программ Windows в Windows 10?
- Как запустить исполняемую программу на рабочем столе Windows 10 через cmd?
- Все ярлыки значков программ Windows в Windows 10?
- Где находится значок программ Windows в Windows 10?
- Где найти значок программы Windows в Windows 10?
- Как открыть значок программ Microsoft Windows в Windows 10?
- Как показать заголовок Windows на панели задач Windows-10?
- Названия значков в Windows 10?
- Куда делась стандартная иконка программ windows из windows, как paint, win 10?
- Как запустить значок программ Windows в Windows 10?
- Как отображать программы в Windows 10?
- Что такое ярлык для значка программ Windows в Windows 10?
- Значок программ Windows не открывает Windows 10?
- Значок программ для Windows загрузить Windows 10?
- Как найти значок программы MS Windows в Windows 10?
- Значок программы MS Windows для Windows 10?
- Каталог и папка значков программ Windows 10 для Windows?
- Как найти значок программы Windows в Windows 10, где значок программы Windows в Windows 10?
- На панели задач Windows 10 отображаются названия значков?
- Показать название программы на панели задач Windows-10, как это сделать?
- Что такое значок программы Windows для Windows 10?
- Не можете найти на компьютере с Windows 10 значок программы Windows?
- Как узнать параметр значка программ Windows в Windows 10?
- Панель задач win 10 для отображения заголовков?
- Панель программы Windows 10?
- Как сделать так, чтобы на панели задач отображались названия программ?
- Как отобразить список значков на панели задач?
- Где найти значок программы Windows в Windows 10, чтобы нарисовать изображение?
- Как скрыть заголовки, которые отображаются со значками на панели задач в Windows 10?
- Я не могу найти значок программы Windows в Windows 10. Где находится значок программы Windows в Windows 10?
Ключевые слова: windows, 10, десять, шоу, программа, имя, панель задач, заголовок, значки, символы, группировка, заголовок, проводник, MS, вопросы, ответы, программное обеспечение
+ Бесплатное ПО
+ Управление файлами
+ Украшение и развлечение
+ Автоматизация
+ Офис
+ Заказ на ПК
+ ПК инструменты тестирования
+ Top
+ Desktop-OK
+ Quad Explorer
+ Don't Sleep
+ Win-Scan-2-PDF
+ Quick-Text -Past
+ Печать дерева папок
+ Поиск одинаковых изображений
+ Experience-Index-OK
+ Font-View-OK
Это облегченное расширение позволяет изменить заголовок окна Visual Studio, чтобы включить дерево папок с настраиваемой минимальной глубиной и максимальной глубиной, расстоянием от файла решения/проекта, а также использовать специальные теги для помощи во многих других возможных сценариях (Git , рт.ст., ТФС, СВН.
Мы очень ценим вашу поддержку!
Биткойн: 16WAaCLAZ1a39KzFtj1FYwPMc2TgbXDSuT
ПРИМЕЧАНИЕ. Поддержка Visual Studio 2022 в настоящее время доступна в выпуске, который можно загрузить здесь. Расширение, доступное в Visual Studio Marketplace, будет обновлено для поддержки Visual Studio 2022, когда Microsoft фактически реализует следующую ключевую важную отсутствующую функцию (пожалуйста, проголосуйте за нее):
Презентация
Это облегченное расширение позволяет изменить заголовок окна Visual Studio, чтобы включить дерево папок с настраиваемой минимальной глубиной и максимальной глубиной, расстоянием от файла решения/проекта, а также использовать специальные теги для помощи во многих других возможных сценариях (Git , Mercurial, TFS. ).
Также доступны правила переопределения для конкретного решения, которые охватывают практически любые возможные потребности в переименовании.
Его также можно настроить таким образом, чтобы правила применялись только в том случае, если хотя бы два экземпляра Visual Studio запущены с одинаковым заголовком окна.
При настройках по умолчанию SolutionFolder — Microsoft Visual Studio (администратор) будет переписан как SolutionFolderParent\SolutionFolder — Microsoft Visual Studio (администратор).
Доступны следующие специальные теги:
- [documentName] Активный документ или, если активного документа нет, имя окна.
- [windowName] Имя активного документа или окна инструмента.
- [projectName] Название активного проекта.
- [startupProjectsNames] Имена запускаемых проектов, разделенные знаком '&', если их несколько.
- [startupProjectsNames:X] Имена запускаемых проектов, разделенные знаком X, если их несколько (рекомендуемые значения: ' & ', ', ' или ' | ' без кавычек).
- [startupProjectsNamesNonRelative] Имена запускаемых проектов, разделенные символом ' & ', если их несколько, с удаленным относительным путем.
- [startupProjectsNamesNonRelative:X] Имя(а) запускаемого(ых) проекта(ов), разделенные знаком X, если их несколько, с удаленным относительным путем (рекомендуемые значения: ' & ', ', ' или ' | ' без кавычек).< /li>
- [documentProjectName] Имя проекта активного документа (если документ является частью загруженного проекта).
- [documentProjectFileName] Имя файла проекта активного документа (если документ является частью загруженного проекта).
- [solutionName] Имя активного решения.
- [documentPath] Полный путь к активному документу или, если активного документа нет, имя окна.
- [documentPath:X] Активный элемент пути к документу по указанному индексу (например, для C:\F1\Foo.cs, [documentPath:0] = C:, [documentPath:1] = C:\F1).< /li>
- [documentPath:X:Y] Сегмент пути к активному документу в указанном диапазоне (например, для C:\F1\Foo.cs, [путь:0:2] = C:\F1\Foo.cs, [путь: 2:0] = Foo.cs\F1\C:).
- [documentParentPath:X] Активный родительский элемент пути к документу по указанному индексу (например, для C:\F1\Foo.cs, [parent:0] = Foo.cs [parent:1] = F1).
- [documentParentPath:X:Y] Активный родительский сегмент пути к документу в указанном диапазоне (например, для C:\F1\Foo.cs, [parent:1:0] =F1\Foo.cs, [parent:0: 1] = Foo.cs\F1).
- [documentUnsaved] Индикатор несохраненного активного документа («*», если изменения не сохранены, иначе пусто).
- [anythingUnsaved] Решение или любой несохраненный индикатор документа («*», если изменения не сохранены, в противном случае пусто).
- [env:X] Переменная среды X для текущего процесса Visual Studio.
- [путь] Полный путь к текущему решению или, если решение не открыто, полный путь к документу или, если нет активного документа, имя окна.
- [путь:X] Элемент пути по указанному индексу (например, для C:\F1\MySolutionFolder\MySolution.sln, [путь:0] = C:, [путь:1] = C:\F1).< /li>
- [путь:X:Y] Сегмент пути в указанном диапазоне (например, для C:\F1\MySolutionFolder\MySolution.sln, [путь:0:2] = C:\F1\MySolutionFolder, [путь:2: 0] = MySolutionFolder\F1\C:).
- [parentPath] Путь к текущему решению или, если решение не открыто, путь к документу с глубиной, определяемой параметрами «Глубина самой дальней родительской папки» и «Глубина ближайшей родительской папки».
- [parent:X] Путь к родительскому элементу по указанному индексу (например, для C:\F1\MySolutionFolder\MySolution.sln, [parent:0] = MySolution.sln [parent:1] = MySolutionFolder).
- [parent:X:Y] Путь к родительскому сегменту в указанном диапазоне (например, для C:\F1\MySolutionFolder\MySolution.sln, [parent:2:1] =F1\MySolutionFolder, [parent:1:2] = MySolutionFolder\F1).
- [ideName] Имя IDE (например, Microsoft Visual Studio), включая суффикс повышения прав, если применимо (например, "(Администратор)").
- [elevationSuffix] Суффикс повышения, если применимо (например, "(Администратор)"), в противном случае пусто.
- [platformName] Текущее название платформы (например, x86).
- [configurationName] Имя текущей конфигурации (например, Release).
- [vsMajorVersion] Основная версия Visual Studio (например, 14, 15, 16. ).
- [vsMajorVersionYear] Основная версия Visual Studio с указанием года (например, 2015, 2017, 2019).
- [vsProcessID] Идентификатор процесса Visual Studio.
- [gitBranchName] Имя текущей ветки Git. Убедитесь, что исполняемый каталог Git добавлен в переменную PATH Windows, или укажите его расположение в настройках.
- [gitRepositoryName] Текущее имя репозитория Git (локальное). Убедитесь, что исполняемый каталог Git добавлен в переменную PATH Windows, или укажите его расположение в настройках.
- [hgBranchName] Имя текущей ветки Mercurial. Убедитесь, что исполняемый каталог Mercurial добавлен в переменную Windows PATH, или укажите его расположение в настройках.
- [svnDirectoryName] Текущее имя каталога SVN. Убедитесь, что исполняемый каталог SVN добавлен в переменную Windows PATH, или укажите его расположение в настройках.
- [svnDirectoryName:X] Элемент каталога SVN по указанному индексу (например, для /Branches/Developer/UserName/MySolutionFolder/MySolution.sln, [svnDirectoryName:0] = /, [svnDirectoryName:1] = Branches). ли>
- [svnDirectoryName:X:Y] Сегмент каталога SVN в указанном диапазоне (например,для /Branches/Developer/UserName/MySolutionFolder/MySolution.sln, [svnDirectoryName:0:2] = /Branches/Developer, [svnDirectoryName:2:0] = Developer/Branches//).
- [tfsBranchName] Имя ветки Team Foundation Server (TFS) загруженного решения, поддерживается только в VS 2017+.
- [workspaceName] Имя рабочей области Team Foundation Server (TFS) загруженного решения.
- [workspaceOwnerName] Имя владельца рабочей области Team Foundation Server (TFS) загруженного решения.
- [debuggedProcessesArgs] Аргументы отлаживаемых в данный момент процессов (включая имя исполняемого файла перед каждым набором аргументов, если процессов больше 1).
Символ \t (табуляция), обычно невидимый, будет добавлен в конец заголовка автоматически, чтобы указать, что заголовок переписывается. Эту добавленную строку можно настроить в Visual Studio > Инструменты > Параметры. > Настроить заголовок окна VS > Глобальные правила > Шаблоны > Добавленная строка.
Аргументы тега X и Y для путей также могут быть отрицательными числами, и в этом случае соответствующий элемент пути или диапазон будут разрешены в обратном порядке, начиная с -1 = последний элемент пути, -2 = предпоследний элемент пути, и т. д.
Это особенно полезно при создании ветвей решения/проекта: становится возможным легко определить, над какой ветвью вы работаете, в случае, если обе будут иметь одинаковое имя решения/проекта.
Разрешить переопределение настроек конкретного решения можно двумя способами:
- Включив этот параметр в настройках и поместив файл MySolution.sln.rn.xml в тот же каталог, что и файл MySolution.sln, на который он должен ссылаться. Файл должен иметь формат xml и содержать один элемент CustomizeVSWindowTitle/SettingsSet, атрибуты которого могут быть следующими: SolutionName , FarthestParentDepth , ClosestParentDepth , PatternIfDesignMode , PatternIfBreakMode , PatternIfRunningMode , AppendedString .
- Включив этот параметр в настройках и указав «Глобальные настройки решения переопределяют путь к файлу». Этот файл должен быть в формате xml, содержащим несколько элементов CustomizeVSWindowTitle/SettingsSet, как и для файлов .sln.rn.xml, с добавлением атрибута Path или дочерних узлов, чтобы указать, к какому пути решения или имени решения применим каждый SettingsSet ( подстановочные знаки \* и \. поддерживаются). Переопределения из этого глобального файла имеют приоритет над переопределениями в файлах .sln.rn.xml.
При необходимости шаблоны могут быть полностью жестко запрограммированы для каждого решения.
Чтобы автоматически создавать и открывать такие XML-файлы, перейдите в раздел "Переопределения для решения" в настройках расширения. Там нажмите удобные кнопки «Открыть конфигурацию решения» или «Открыть глобальную конфигурацию». Файлы будут предварительно заполнены вашей текущей конфигурацией, чтобы упростить дальнейшую настройку, и будут открыты для редактирования, как и любой другой файл кода прямо в Visual Studio.
Все доступные теги перечислены в настройках расширения в Visual Studio > Инструменты > Параметры. > Настроить заголовок окна VS > Поддерживаемые теги. Их также можно легко вставить в каждое поле шаблона, щелкнув стрелку раскрывающегося списка справа от каждого поля, а затем значок . желтая кнопка.
Здесь приветствуются запросы функций. Начальная страница релиза здесь. Официальный репозиторий GitHub здесь. Участие приветствуется.
Примечание. Поддержка Visual Studio 2010 прекращена из-за ограничений, налагаемых форматом VSIX от Microsoft для поддержки Visual Studio 2017. Однако последнюю стабильную версию (3.3.6), поддерживающую Visual Studio 2010, можно загрузить здесь.
Примечание. Поддержка Visual Studio 2012 и 2013 прекращена из-за новых требований, предъявляемых корпорацией Майкрософт для ускорения загрузки с помощью AsyncPackage. Однако последнюю стабильную версию (3.8.1), поддерживающую Visual Studio 2012 и 2013, можно загрузить здесь.
Читайте также: