2014-02-12 4 views
2

У нас есть утилита командной строки, которая открывает документы MS Office на сервере и преобразует их в PDF. Для документов Office, в которых есть макрос, появится всплывающее предупреждение о безопасности, и утилита не будет продолжать выполнять задание, пока кто-то не включит макрос.Команда Batch или PowerShell для получения имен всех открытых приложений в Windows

Например, диалоговое окно предупреждающего сообщения для файла Visio имеет заголовок «Уведомление о безопасности Microsoft Visio». Нам нужно нажать кнопку включения.

Это название отображается в области «Приложение» в диспетчере задач Windows, но не в списке процессов.

Я хочу написать утилиту, чтобы уведомить меня, когда это произойдет.

Не могли бы вы сообщить мне, какую команду или команду PowerShell можно использовать для чтения/поиска списка задач на основе имен (т. Е. Получить все имена приложений, отображаемые на панели приложений в диспетчере задач Windows).

Я пробовал tasklist и get-process. Они предоставляют информацию о процессах, но не о деталях названия окна приложения.

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

+0

FYI, в новых версиях Office это предупреждение не отображается в диалоговом окне. Он отображается в информационной строке (вместе с кнопкой включения) в верхней части главного окна приложения. –

ответ

4

Вот доказательство концепции. Если вам нужно, вы можете реализовать функции электронной почты или триггеры. Но на самом деле, если вы знаете название окна, его довольно легко манипулировать.

$vischk = get-process | where-object {$_.mainwindowhandle -ne 0 -and $_.MainWindowTitle -eq "Microsoft Visio Security Notice"} | select-object name, mainwindowtitle 

    if (!($vischk)) 
    { 
    Write-Warning "Security notice not present" 
    } else { 
    Write-Warning "This is where you'd do your scripting" 
    } 
+0

Это дает имя утилиты или процесса, а не имя окна. Например, откройте google.com в IE и перейдите на панель приложений диспетчера задач, вы увидите google как имя задачи. когда мы видим процесс, он показывает только iexplorer.exe. Я пытаюсь найти Google в панели приложений. – user3299450

0

Информация, которую вы видите в TaskManager (ну, по крайней мере один на Win8), вероятно, вытащил из либо продукта или Описание полей FileVersionInfo в например:

Get-Process | % {$_.MainModule} | ft Product,Description 

BTW, если вы ищете заголовок окна диалогового окна, MainWindowTitle для процесса не поможет вам. Вам нужно будет найти окно, в котором вы можете использовать модуль WASP. И если это более новая версия Office, основные приложения больше не используют диалоговые окна для предупреждений о включении макросов и т. Д.

+0

Спасибо за намек на WASP, мне, возможно, придется исследовать его. – user3299450