我试图在Powershell中创建一个消息对话,其中用户无权对消息采取行动,因为这是意图。因此消息将使X按钮与按钮一起变灰(不显示按钮甚至更好)。
我能够达到的最接近的是通过以下代码禁用X:
$wshell = New-Object -ComObject Wscript.Shell -ErrorAction Stop
$wshell.Popup("Aborted",0,"ERROR!",48+4)
但无法弄清楚禁用按钮部分。 MS下面的文章也没有什么帮助:
Sitecore Content Author's Reference and Cookbook
通过网络引用了一些其他文章甚至建议使用HTML或VB库定制按钮。但不是我想要的。
任何帮助/提示/建议都将深表感谢。
此致 沙克蒂
答案 0 :(得分:1)
深入了解.NET Windows.Forms命名空间,您可以使用它创建任何类型的窗口:
https://msdn.microsoft.com/en-us/library/system.windows.forms.aspx
这是一个快速示例窗口,没有按钮,用户无法移动/关闭,但在5秒后自动关闭:
Function Generate-Form {
Add-Type -AssemblyName System.Windows.Forms
# Build Form
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Test"
$objForm.Size = New-Object System.Drawing.Size(220,100)
# Add Label
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(80,20)
$objLabel.Size = New-Object System.Drawing.Size(100,20)
$objLabel.Text = "Hi there!"
$objForm.Controls.Add($objLabel)
# Show the form
$objForm.Show()| Out-Null
# wait 5 seconds
Start-Sleep -Seconds 5
# destroy form
$objForm.Close() | Out-Null
}
generate-form
答案 1 :(得分:0)
使用上面的脚本作为启动点,我正在尝试创建一个函数,该函数将允许我弹出一个请稍等的消息,请运行更多脚本然后关闭弹出窗口
Function Popup-Message {
param ([switch]$show,[switch]$close)
Add-Type -AssemblyName System.Windows.Forms
# Build Form
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Test"
$objForm.Size = New-Object System.Drawing.Size(220,100)
# Add Label
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(80,20)
$objLabel.Size = New-Object System.Drawing.Size(100,20)
$objLabel.Text = "Hi there!"
$objForm.Controls.Add($objLabel)
If ($show)
{
$objForm.Show() | Out-Null
$global:test = "Show"
}
If ($close)
{
# destroy form
$objForm.Close() | Out-Null
$global:test = "Close"
}
}
然后我可以通过以下方式显示弹出窗口:
Popup-Message -show
此时,我可以看到 $ test 变量为显示
但是当我尝试使用以下方法关闭窗口时:
Popup-Message -close
但是弹出窗口不会关闭 如果我再次查看 $ test ,它将显示为关闭
我假设这与将函数保留在Global Scope中有关,但是我不知道如何使用表单