ivan456
04-07-2024, 02:52
Всем привет.
Есть такое простое окошко, нужно по нажатию на стандартную кнопку свернуть в трей и убрать с панели задач значок.
Пробовал ставить в $form.add_Resize - $form.ShowInTaskbar = $false, сворачивает, но тут же закрывает его.
Не могу понять как это сделать.
$HideWindow = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
Add-type -Name win -Member $HideWindow -Namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text = "Мое окно"
$form.Size = New-Object System.Drawing.Size(300,200)
$form.add_Shown({
if ($form.WindowState -ne "Normal") {
$notifyIcon.Visible = $true
}
})
$notifyIcon = New-Object System.Windows.Forms.NotifyIcon
$notifyIcon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon((Get-Process -id $PID).Path)
$notifyIcon.Text = "Мое окно"
$notifyIcon.add_Click({
$form.WindowState = "Normal"
})
$form.add_Resize({
if ($form.WindowState -eq "Minimized") {
$notifyIcon.Visible = $true
$form.WindowState = "Minimized"
} elseif ($form.WindowState -eq "Normal") {
$notifyIcon.Visible = $false
$form.WindowState = "Normal"
}
})
$contextMenu = New-Object System.Windows.Forms.ContextMenu
$menuItem = New-Object System.Windows.Forms.MenuItem
$menuItem.Text = "Выход"
$menuItem.add_Click({
$form.Close()
$notifyIcon.Dispose()
})
$contextMenu.MenuItems.Add($menuItem)
$notifyIcon.ContextMenu = $contextMenu
$form.ShowDialog()
Ещё хотел спросить, возможно ли в стандартный заголовок windows добавить ещё одну кнопочку свернуть в трей. Почитав немного, понял что вроде это нельзя сделать, но может я что не понял и всё же как то можно сделать?
Есть такое простое окошко, нужно по нажатию на стандартную кнопку свернуть в трей и убрать с панели задач значок.
Пробовал ставить в $form.add_Resize - $form.ShowInTaskbar = $false, сворачивает, но тут же закрывает его.
Не могу понять как это сделать.
$HideWindow = '[DllImport("user32.dll")] public static extern bool ShowWindow(int handle, int state);'
Add-type -Name win -Member $HideWindow -Namespace native
[native.win]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0)
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text = "Мое окно"
$form.Size = New-Object System.Drawing.Size(300,200)
$form.add_Shown({
if ($form.WindowState -ne "Normal") {
$notifyIcon.Visible = $true
}
})
$notifyIcon = New-Object System.Windows.Forms.NotifyIcon
$notifyIcon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon((Get-Process -id $PID).Path)
$notifyIcon.Text = "Мое окно"
$notifyIcon.add_Click({
$form.WindowState = "Normal"
})
$form.add_Resize({
if ($form.WindowState -eq "Minimized") {
$notifyIcon.Visible = $true
$form.WindowState = "Minimized"
} elseif ($form.WindowState -eq "Normal") {
$notifyIcon.Visible = $false
$form.WindowState = "Normal"
}
})
$contextMenu = New-Object System.Windows.Forms.ContextMenu
$menuItem = New-Object System.Windows.Forms.MenuItem
$menuItem.Text = "Выход"
$menuItem.add_Click({
$form.Close()
$notifyIcon.Dispose()
})
$contextMenu.MenuItems.Add($menuItem)
$notifyIcon.ContextMenu = $contextMenu
$form.ShowDialog()
Ещё хотел спросить, возможно ли в стандартный заголовок windows добавить ещё одну кнопочку свернуть в трей. Почитав немного, понял что вроде это нельзя сделать, но может я что не понял и всё же как то можно сделать?