简体   繁体   English

没有隐藏表单的托盘图标上下文菜单

[英]Tray Icon Context Menu without hidden Form

I've been experimenting with tray icons & context menus in PowerShell for some time.一段时间以来,我一直在 PowerShell 中尝试使用托盘图标和上下文菜单。 However, i can only get the context menu to work correctly when a Form is called in the same script.但是,只有在同一脚本中调用 Form 时,我才能使上下文菜单正常工作。

Here is a small example:这是一个小例子:

Add-Type -AssemblyName "System.Windows.Forms"

$objForm = New-Object System.Windows.Forms.Form
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 
$objContextMenu = New-Object System.Windows.Forms.ContextMenu
$objExitMenuItem = New-Object System.Windows.Forms.MenuItem

$objExitMenuItem.Index = 1
$objExitMenuItem.Text = "Exit"
$objExitMenuItem.add_Click({ 
$objForm.Close() 
$objNotifyIcon.visible = $false 
})
$objContextMenu.MenuItems.Add($objExitMenuItem) | Out-Null

$objNotifyIcon.Icon = "$PSScriptRoot\win.ico"
$objNotifyIcon.Text = "Context Menu"

$objNotifyIcon.ContextMenu = $objContextMenu
$objForm.ContextMenu = $objContextMenu

#Enabling Icon in Taskbar
$objNotifyIcon.Visible = $true

#Hiding Form as best as possible
$objForm.Visible = $false
$objForm.WindowState = "minimized"
$objForm.ShowInTaskbar = $false
$objForm.add_Closing({ $objForm.ShowInTaskBar = $False }) 

$objForm.ShowDialog()

As soon as the Form componets are removed, the Context menu wont work correctly.一旦表单组件被移除,上下文菜单将无法正常工作。 Does anyone know why you need this Form to be loaded and is there a way around it?有谁知道为什么你需要加载这个表单,有没有办法解决它?

System.Windows.Forms.ApplicationContext 是您需要用来实现这一目标的东西。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM