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

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

Ответить
Настройки темы
Любой язык - Программка или скрипт для вывода сообщения, как у Метро-приложений

Ветеран


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


Конфигурация

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


Изменения
Автор: severagent007
Дата: 29-11-2015
Использую фильтр записи UWF, при заполнении оверлея в озу комп зависает наглухо. До этого таких неприятностей не было, т.к сама виндовс может работать очень долго, когда все записи на системный диск перенаправляются фильтром в озу-оверлей размером в 1024 мб, если только ошибочно не скопировать что-то объёмом больше 1 гб на С:
Но есть всё-таки моменты приводящие к зависанию и ресету компа, когда я не виноват: например Медиа креатион тулс - указал куда скачивать образ (4 гб) на другой диск, не защищённый фильтром UWF, ушёл пить чай - пришёл скачано 39% и комп благополучно висит мертво - я же не знал, что утилита всё равно качает его на С: (так и не понял куда) а при завершении скачки и, наверное проверки суммы - перемещает его на указанный диск. То есть качалось на С: т.е в озу, а размер оверлея в озу установлен 1 гб и при заполнении комп завис. Фильтр записывает сообщение в журнал событий, его можно настроить , например превышении оверлея озу в 512 мб, когда ещё не поздно остановить тот же Медиа кр тулс или случайное копирование больших файлов на С: Но в журнал же не будешь постоянно смотреть и рефрешить его, это невозможно. Или извлечение из архива перетаскиванием мышью файла - распаковывает его сначала в C:\Users\...\AppData\Local\Temp на С, а только потом перемещает в указанную папку, а если файл больше 1 гб, и забыл, что нельзя перетаскивать, (а надо юзать кнопку "Извлечь") - привет ресет.
Короче, создал задание в планировщике в ответ на событие uwf warning 512 mb write! но задача не создаётся с действием "Вывод сообщения" - говорит устаревшая возможность, но это ладно - можно задать запуск скрипта или программки. Только вот как сделать скрипт или программку, чтобы выводилось сообщение как у Метро-приложений, тот же Нюторрент выводит их возле часов, красивое окошко в метро стиле. Очень хочу тоже такое сообщение сделать, только как? Помогите, пожалуйста.

Отправлено: 01:02, 29-11-2015

 

Ветеран


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

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


Цитата severagent007:
тот же Нюторрент выводит их возле часов, »
NirCmd/PowerShell.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:21, 29-11-2015 | #2



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

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


Ветеран


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

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


Цитата Iska:
NirCmd/PowerShell »
есть эти утилиты, первой пользуюсь для запуска приложений от имени системы. Скрипт какой к ним нужен или программа? Чтобы можно было запустить через планировщик, задание сделать смогу... а что запускать-то в задании?

Отправлено: 03:05, 29-11-2015 | #3


Ветеран


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

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


NirCmd - trayballoon

Windows PowerShell Tip: Displaying a Message in the Notification Area
Correctly Showing Balloon Tips
и т.п.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:32, 29-11-2015 | #4


Ветеран


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

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


Iska, Большое спасибо! Даже гуглить толком не умею...
Хм... даже не подозревал, что у ниркмд есть такая возможность, думал он только серьёзными вещами занимается . С повер шелл немного не разобрался, вот один скрипт сработал (средняя ссылка), но как убрать окно появляющееся повер шелла?
И по последней ссылке там, как я понял без иконки в трее работает скрипт? Я не смог его заставить работать... Смотрю на него, как баран на новые ворота, почему он не работает? Как его правильно сделать скрипт? Вот он:
Скрытый текст
Код: Выделить весь код
function Show-BalloonTip  
{
 
  [CmdletBinding(SupportsShouldProcess = $true)]
  param
  (
    [Parameter(Mandatory=$true)]
    $Text,
   
    [Parameter(Mandatory=$true)]
    $Title,
   
    [ValidateSet('None', 'Info', 'Warning', 'Error')]
    $Icon = 'Info',
    $Timeout = 10000
  )
 
  Add-Type -AssemblyName System.Windows.Forms

  if ($script:balloon -eq $null)
  {
    $script:balloon = New-Object System.Windows.Forms.NotifyIcon
  }

  $path                    = Get-Process -id $pid | Select-Object -ExpandProperty Path
  $balloon.Icon            = [System.Drawing.Icon]::ExtractAssociatedIcon($path)
  $balloon.BalloonTipIcon  = $Icon
  $balloon.BalloonTipText  = $Text
  $balloon.BalloonTipTitle = $Title
  $balloon.Visible         = $true

  $balloon.ShowBalloonTip($Timeout)
}
и ещё дописано:

After running the function, simply use it like this:

Код: Выделить весь код
PS> Show–BalloonTip –Text 'Script has retrieved data' –Title 'All is fine' –Icon Info –Timeout 5000 -вот это не понял куда его?
PS>
You have to call its method Dispose() to actually remove it from the tray bar. So you can do this from script:
Код: Выделить весь код
PS> $script:balloon.Dispose()
PS>
The icon will immediately be removed from the tray area. But when you try and show another balloon, you will get an error now – the function just checks whether there is a shared variable called "balloon" and tries and reuses the icon.

Since you have disposed it, it no longer works. So when you do want to dispose the tray icon, make sure you also dispose your variable:
Код: Выделить весь код
PS> $script:balloon.Dispose()
PS> Remove–Variable –Scope script –Name balloon
PS>

что тут куда... скрипты разрешил выполнение командой сет ексекутив в повер шел, создал файл с расширением ps1, но он не работает...

а такой запускается скрипт, задачу сделал, в принципе всё устраивает, кроме моргающего окна PowerShell и таймаута:
Скрытый текст
Код: Выделить весь код
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 

$objNotifyIcon.Icon = "C:\Scripts\Forms\Folder.ico" 
$objNotifyIcon.BalloonTipIcon = "Error" 
$objNotifyIcon.BalloonTipText = "A file needed to complete the operation could not be found." 
$objNotifyIcon.BalloonTipTitle = "File Not Found"
 
$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

но опосля его работы висит иконка в трее... хотя пускай висит, это очень хорошо, т.к уведомление через 5 сек исчезает, хоть ты тресни, при любом таймауте... хоть и написано до 30 сек, но это в десятке уже наверно изменили.
Я, конешно, извиняюсь за наглость, и так за меня гуглили... ещё хотел узнать, может кто знает какой таймаут поставить, чтобы окно уведомления не скрывалось вообще, только кликом по крестику ведь уведомления центра безопасности не исчезают...

-WindowStyle Hidden -file C:\Scripts\MyScript.ps1 в PowerShell 2.0 это должно убирать окно консоли, хоть и быстрее, но оно всё равно моргает. Наверно очень мощная видеокарта у меня, быстрее рисует, чем винда сообразит
Вроде как можно обновлять уведомление, тогда оно будет постоянно, по-идее, висеть до закрытия мышкой, но как это сделать пока не придумал, тем более всё привязано к шедулеру, вот пример скрипта обновляемого уведомления, при условии, что скрипт не завершает работу:
Скрытый текст
Код: Выделить весь код
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")

$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 

$objNotifyIcon.Icon = "C:\Scripts\Forms\Folder.ico"
$objNotifyIcon.BalloonTipIcon = "Info" 
$objNotifyIcon.BalloonTipText = "Retrieving files from C:\Windows." 
$objNotifyIcon.BalloonTipTitle = "Retrieving Files" 

$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

Get-ChildItem C:\Windows

$objNotifyIcon.BalloonTipText = "The script has finished running." 
$objNotifyIcon.BalloonTipTitle = "Files retrieved." 

$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

Последний раз редактировалось severagent007, 29-11-2015 в 18:42.


Отправлено: 12:43, 29-11-2015 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] на плитках метро приложений нет надписей и значков ShRaMkoD Microsoft Windows 8 и 8.1 1 04-04-2013 19:37
Интерфейс - программу Метро для вывода системной информации seven.ap Microsoft Windows 8 и 8.1 1 06-02-2013 12:09
Интерфейс - принудительное включение функции SNAP для метро-приложений Anselm9 Microsoft Windows 8 и 8.1 7 11-01-2013 17:05
VBS/WSH/JS - [решено] Скрипт вывода сообщения zion87 Скриптовые языки администрирования Windows 6 09-01-2012 04:08
Рекламная программка или что-то в этом роде. Создает в теле сообщения ссылку ERR Лечение систем от вредоносных программ 1 20-04-2010 09:04




 
Переход