|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] иконка с обновляемой информацией в трее посредством PowerShell / VBS |
|
Любой язык - [решено] иконка с обновляемой информацией в трее посредством PowerShell / VBS
|
Новый участник Сообщения: 2 |
как сделать посредством PowerShell / VBS / WSH / C# (C# в PowerShell) иконку в трее с динамически обновляемой (отображаемой) информацией в стиле, к примеру, qBittorrent?
|
|
------- Отправлено: 13:12, 01-08-2021 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 15:14, 01-08-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить 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 |
------- Последний раз редактировалось kfawkes0, 01-08-2021 в 19:53. Причина: пояснения решения. Отправлено: 19:48, 01-08-2021 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата kfawkes0:
Если Вам нужно простое отображение именно из-под консоли — возьмите NirCmd: NirCmd - Freeware command-line tool for Windows, trayballoon. |
|
Отправлено: 21:11, 01-08-2021 | #4 |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать @kfawkes0 вам все еще нужно это ?
|
|
Отправлено: 17:26, 02-08-2021 | #5 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
иконка в трее | 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 |
|