Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] иконка с обновляемой информацией в трее посредством PowerShell / VBS

Ответить
Настройки темы
Любой язык - [решено] иконка с обновляемой информацией в трее посредством PowerShell / VBS

Аватара для kfawkes0

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png input.png
(24.8 Kb, 8 просмотров)
как сделать посредством PowerShell / VBS / WSH / C# (C# в PowerShell) иконку в трее с динамически обновляемой (отображаемой) информацией в стиле, к примеру, qBittorrent?

-------
-- Kerli Fawkes


Отправлено: 13:12, 01-08-2021

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


powershell create tray notify - Поиск в Google.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:14, 01-08-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kfawkes0

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


и вправду поискав в Google я сумел найти то необходимое, для решение моей задачи (ну, почти. я не смог найти отображение сообщения в реальном времени)

вот пример реализации моей задачи (чтобы оно считалось решением, так как запрос в Google хоть и был полезен, но результаты могут измениться через время):
* это PowerShell в MS-DOS batch; для работы требуется файл 'example.ico' на рабочем столе пользователя.
Скрытый текст
Код: Выделить весь код
@set ".trayfrms.t_f=%LocalAppData%\Temp\trayfrms"
  @call :source.ps1.systray-menu >"%.trayfrms.t_f%.ps1"
  @call :script.ps1 "%.trayfrms.t_f%.ps1"
@goto END.

:script.ps1
  @call "%WinDir%\System32\WindowsPowerShell\v1.0\PowerShell.EXE" -ExecutionPolicy ByPass -File %*
@goto EXIT

:source.ps1.systray-menu
  @echo [void][System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
    @echo. 
  @echo $STForm = New-Object System.Windows.Forms.form
  @echo $NotifyIcon = New-Object System.Windows.Forms.NotifyIcon
  @echo $ContextMenu = New-Object System.Windows.Forms.ContextMenu
  @echo $MenuItem = New-Object System.Windows.Forms.MenuItem
  @echo $MenuItem2 = New-Object System.Windows.Forms.MenuItem
  @echo $MenuItem3 = New-Object System.Windows.Forms.MenuItem
  @echo $Timer = New-Object System.Windows.Forms.Timer
  @echo $HealthyIcon = New-Object System.Drawing.Icon("$env:USERPROFILE\Desktop\example.ico")
  @echo $UnhealthyIcon = New-Object System.Drawing.Icon("$env:USERPROFILE\Desktop\example.ico")
    @echo. 
  @echo $STForm.ShowInTaskbar = $false
  @echo $STForm.WindowState = "minimized"
    @echo. 
  @echo $NotifyIcon.Icon = $HealthyIcon
  @echo $NotifyIcon.ContextMenu = $ContextMenu
  @echo $NotifyIcon.ContextMenu.MenuItems.AddRange($MenuItem)
  @echo $NotifyIcon.ContextMenu.MenuItems.AddRange($MenuItem2)
  @echo $NotifyIcon.ContextMenu.MenuItems.AddRange($MenuItem3)
  @echo $NotifyIcon.Visible = $True
    @echo. 
  @echo # We need to avoid using Start-Sleep as this freezes the GUI. Instead, we'll utilitse the .NET forms timer, it repeats a function at a set interval.
  @echo $Timer.Interval = 300000 # (5 min)
  @echo $Timer.add_Tick({ Load-Config })
  @echo $Timer.start()
    @echo. 
  @echo # This will appear as a right click option on the system tray icon
  @echo $MenuItem.Index = 0
  @echo $MenuItem.Text = "Exit"
  @echo $MenuItem.add_Click({
  @echo         $Timer.Stop()
  @echo         $NotifyIcon.Visible = $True
  @echo         $STForm.close()
  @echo     })
    @echo. 
  @echo $MenuItem2.Index = 0
  @echo $MenuItem2.Text = "Open notepad.exe"
  @echo $MenuItem2.add_Click({
  @echo         $Timer.Stop()
  @echo         $NotifyIcon.Visible = $True
  @echo         Start-Process notepad.exe
  @echo         $STForm.close()
  @echo     })
    @echo. 
  @echo $MenuItem3.Index = 0
  @echo $MenuItem3.Text = "Open notepad.exe (no exit)"
  @echo $MenuItem3.add_Click({
  @echo         $Timer.Stop()
  @echo         $NotifyIcon.Visible = $True
  @echo         Start-Process notepad.exe
  @echo     })
    @echo. 
  @echo function Load-Config
  @echo {
  @echo     #Get-Content some Data from a file here
  @echo     if ($warn)
  @echo     {
  @echo         $NotifyIcon.Icon = $UnhealthyIcon
  @echo         $NotifyIcon.ShowBalloonTip(30000, "Attention!", "Some data from a file here...", [system.windows.forms.ToolTipIcon]"Warning")
  @echo         Remove-Variable warn
  @echo     }
  @echo     else
  @echo     {
  @echo         $NotifyIcon.Icon = $HealthyIcon
  @echo     }
  @echo }
    @echo. 
  @echo Load-Config
  @echo [void][System.Windows.Forms.Application]::Run($STForm)
@goto EXIT

:END.
  @if NOT defined .trayfrms.t_f (@goto EXIT)
    @del /q /f "%LocalAppData%\Temp\trayfrms*" >NUL 2>NUL.
  @set ".trayfrms.t_f="
:EXIT
для получения чистого PowerShell кода надо использовать в начале файла:
Код: Выделить весь код
@set ".trayfrms.t_f=%LocalAppData%\Temp\trayfrms"
  @call :source.ps1.systray-menu
@goto END.

-------
-- Kerli Fawkes


Последний раз редактировалось kfawkes0, 01-08-2021 в 19:53. Причина: пояснения решения.


Отправлено: 19:48, 01-08-2021 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата kfawkes0:
…в MS-DOS batch »
Нет там никакого MS-DOS. Консоль во всех версиях NT — обычное Windows-приложение.


Если Вам нужно простое отображение именно из-под консоли — возьмите NirCmd: NirCmd - Freeware command-line tool for Windows, trayballoon.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:11, 01-08-2021 | #4


Старожил


Сообщения: 250
Благодарности: 51

Профиль | Отправить PM | Цитировать


@kfawkes0 вам все еще нужно это ?

Отправлено: 17:26, 02-08-2021 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] иконка с обновляемой информацией в трее посредством PowerShell / VBS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
иконка в трее LexaSF Тест-форум 4 21-12-2010 20:00
[решено] Иконка громкости в трее gixnax Автоматическая установка Windows 2000/XP/2003 2 06-12-2010 16:03
Интерфейс - Иконка сети в трее balashovka Microsoft Windows 7 10 18-04-2010 23:16
Интерфейс - Иконка сетевого соединения в трее Deem Microsoft Windows 2000/XP 8 18-10-2009 11:29
Иконка соединения с инетом в трее UZER Хочу все знать 6 02-05-2004 02:53




 
Переход