2017-01-27 6 views
0

Я использую приложение, которое позволяет запускать сценарии Powershell на устройствах в моей сети, и мне нужно пригласить пользователей MessageBox.MessageBox в Powershell не выводится на передний план

Мой скрипт создает MessageBox в порядке, но моя проблема в том, что он всегда отображается за моим приложением. Я попробовал решение в Интернете, которое предложило создать новую форму с свойством Topmost = true и передать ее в качестве первого параметра, однако она, похоже, не работает. Есть ли что-то сразу очевидное, что я делаю неправильно?

Add-Type -AssemblyName PresentationCore,PresentationFramework 

$top = new-Object System.Windows.Forms.Form -property @{Topmost=$true} 
$Result = [System.Windows.Forms.MessageBox]::Show($top, $MessageBody,$MessageTitle,$ButtonType,$MessageIcon) 

ответ

1

Порожденные окна требуют родителя. Если они этого не сделают, они будут отставать от других окон (как вы нашли).

Следующая не PowerShell связаны, сами по себе ... но это то, что вам нужно знать/сделать, чтобы попасть туда, куда вы хотите поехать ...

Why isn't MessageBox TopMost?

и, возможно,

In Powershell how do I bring a messagebox to the foreground, and change focus to a button in the message box

0

Вам не нужно использовать [System.Windows.Forms.Form] объект, вы можете сделать это в 1 строке с помощью переменной $this в качестве первого параметра:

$Result = [System.Windows.Forms.MessageBox]::Show(**$this**, $top, 
    $MessageBody,$MessageTitle,$ButtonType,$MessageIcon)