Serguei Kouzmine, Дело было в другом))
При добавлении [System.Windows.Forms.Application]::Run() перестало закрываться при сворачивании в трей.
Кому надо используйте)
Готовый powershell gui скрипт, окно которое скрывается при нажатии кнопки свернуть в заголовке окна в трей, уведомляет что оно свернуто, после нажатия на значок в трее разворачивается, что я и хотел).
Правда я хотел ещё что бы была в заголовке окна ещё одна кнопка, но как я понял это невозможно сделать на powershell gui только если писать свою программу, там можно, а тут нельзя ну или я не совсем разобрался. Если знаете как это сделать напишите.
Скрытый текст
Код:
$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(800, 500)
# Добавляем обработчик события изменения размера окна
$form.add_Resize({
if ($form.WindowState -eq "Minimized") {
$form.Hide()
$notifyIcon.Visible = $true
$notifyIcon.ShowBalloonTip(1000)
}
})
# Добавляем обработчик изменения состояния окна
$form.add_SizeChanged({
if ($form.WindowState -eq "Minimized") {
$form.Hide()
$notifyIcon.Visible = $true
$notifyIcon.ShowBalloonTip(1000)
}
})
# Добавляем обработчик закрытия формы
$form.add_FormClosing({
$form.Hide()
$notifyIcon.Visible = $true
$_.Cancel = $true
})
$notifyIcon = New-Object System.Windows.Forms.NotifyIcon
$notifyIcon.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon((Get-Process -Id $PID).Path)
$notifyIcon.Visible = $false
$notifyIcon.BalloonTipIcon = [System.Windows.Forms.ToolTipIcon]::Info
$notifyIcon.BalloonTipText = "Окно свернуто в трей"
$notifyIcon.BalloonTipTitle = "Пример окна PowerShell GUI"
$notifyIcon.ShowBalloonTip(1000)
# Добавляем обработчик клика по значку в трее
$notifyIcon.add_Click({
$form.Show()
$form.WindowState = "Normal"
$notifyIcon.Visible = $false
})
# Добавляем контекстное меню для значка в трее
$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.Show()
[System.Windows.Forms.Application]::Run()
PS. Возможно где то ошибки, но вариант рабочий если поправите и скините сюда, будет очень хорошо.
Serguei Kouzmine, реально ли поменять стили такого окошка? Может фон прикрутить или кнопки красивые сделать?
Можно потом после дописанания окончательно конвертировать в ps2exe в .exe и будет своя мини программа), которая делает какое то действие в системе.
Недавно тут спрашивал про тачпад, оригинальная программа урезана в функционале, на win7 была удобнее и настроек больше, можно с win7 настройки программы скопировать из реестра, добавить их в powershell в виде галок, и конвертировать в exe)))
будет некий заменитель оригинальной программы)