Comments 37
Прошу прощения за битое форматирование.
Надеюсь, что это кому-то поможет
Что приятнее конечному пользователю:
Непонятная консоль (которую надо знать)
Или же ввести текст в графический интерфейс?
Мне, как конечному пользователю всегда приятнее использовать стандартные формы передачи сообщений.
Простите, что значит «стандартная форма передачи сообщений»?
У нас в компании официальная почта, затем аська/скайп. Уведомления, которые рассылаются службой поддержки 1С — стандартны для пользователей 1С, поскольку если окно TSC открыто на весь экран (а в бухгалтерии это чуть ли не штатная ситуация 99% рабочего времени) ни всплывающее окно аутлука, ни аськи ни скайпа не будет замечено в 90% случаев.
В отличие от окошка по центру экрана, которое перекрывает платежку/проводку и т.п.
Кстати реакцию на нажатие ОК в этом окне можно попробовать отловить и обработать, но это уже другая история…
По роду деятельности я стараюсь избегать работающих с 1с и подобными продуктами (читать: украинский сектор), поэтому плаваю в потребностях пользователей 1с, и даже не подозревал что кому-то может понадобиться возвращение в win95 с его pop-up. Если у Вас, как и у большинства официальная почта, потом аська/скайп, то логично предположить что и приоритет у этих систем соответствующий: почта, аська/скайп, все остальное. Если кто-то не умеет оперативно пользоваться почтой то это другой разговор. Я высказываю лично свое мнение, и подобного рода финты, я бы отключил и не принимал во внимание до официального письма в почте. Лично мне не нравятся pop-up, они у меня в браузере тоже выключены, а у Вас?
Видите ли, ПопАп об обновлениях 1С это немного другое. обзванивать стопицот пользователей — не выход, а письма в почту половина из них пропустит по причине полноэкранного режима клиента RDP
Мы говорим немного о разных вещах. Я говорю что у каждого есть свои официальные обязанности и свои официальные правила. Соответственно если в правилах написано: официальный способ общения — почта, то это не повод вообще кого-то обзванивать, это больше повод кого-то штрафовать. Есть правила их надо выполнять. Новый человек, который приходит в компанию не должен тонуть в разнообразных негласных фичах, и потом оправдываться что был не прав, поп-апы не читал. Хотя Дело Ваше, Написано в правилах официальный способ общения — поп-ап, я думаю никто из сторонних наблюдателей не будет против, так возможно зададутся вопросом, как я, не более того.
Да, все таки о разных вещах.
Потому как в разных отделах могут быть разные штуки. не смотря на корпоративный стандарт — почту.
Сам очень часто работаю по рдп, проверять регулярно почту обязательно. Но у такого способа есть плюс, работая по рдп бухгалтер не будут смотреть в почту каждые 5 минут. А если админу или 1с прогерам необходимо чтобы все корректно вышли из 1с? самым быстрым будет обзвон отделов или вот такое решение как описал автор.
Ну возможно тем кто работает с более чем 10-ю терминальными серверами это и будет полезно, но мне с 3-я серверами пока хватало net send'a и без GUI…
Хм… чего-то я не понял…
net send нужен на терминальном сервере с серверной виндой. Причём тут семёрка?
ленивая у вас служба поддержки «некоей желтой программы».
средствами самой одинэсины прекрасненько организуется и обмен сообщениями (сключая рассылку) по всем рабочим сеансам, и отключение сеансов (с таймаутом если нужно).
(если не лениться — даже можно хоть IM, хоть чаты, хоть борды сварганить)
«сключая» — в смысле «включая», как бы это парадоксально ни выглядело, простите, клавадурапасерлохивсётакоэ…
Скажем так — есть задача, я ее решил, плюс узнал для себя кучу новых интересных штук в рамках того языка программирования, который мне интересен :)
Что там умеет желтая программа и насколько ее юзают пользователи и программеры для меня вообще тайна за семью печатями…
да я разве же тебя в чем-то упрекаю? нет, что ты, ни полуслогом.
просто показательно, что имея точно так же задачу и имея возможность руками сделать кучу интересных штук, мои, извиняюсь за выражение, коллеги перевесили её на кого-то другого.
(ох, чувствую, огребу)
Возможно Ваши коллеги и мои сотрудники просто не представляют себе функционал того что они используют :)
про .Net из повершелла я тоже узнал, в общем-то с недели полторы назад :)
А сколько еще узнаю в процессе ковыряния екченджа/шарепоинта и прочих технолгий )))
По форме все верно, а по сути извращение. Для создание форм под повершеллом не нужно использовать создание контролов из пространства имен System.Windows.Forms, ведь сами видите, в этом случае 95% скрипта занимает собственно отрисовка формы, а 5% — смысловая нагрузка скрипта. А отладка? Сколько раз вы запустили скрипт, чтобы убедиться, что вы положение каждой кнопочки и комбобоксика указали в пикселях правильно?
Воспользуйтесь Windows Presentation Framework!
Вот, набросал за пять минут:

--[testform.xml]--
<Window 
 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 Title="Заголовочек" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="146" Width="205">
 <Grid Height="103" Width="180">
  <Button Content="Кнопочка А" Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
  <Button Content="Кнопочка Б" Height="23" HorizontalAlignment="Left" Margin="93,12,0,0" Name="button2" VerticalAlignment="Top" Width="75" />
  <TextBlock Height="23" HorizontalAlignment="Left" Margin="12,41,0,0" Name="textBlock1" Text="Текст" VerticalAlignment="Top" Width="156" />
  <ComboBox Height="23" HorizontalAlignment="Left" Margin="12,70,0,0" Name="comboBox1" VerticalAlignment="Top" Width="156">
    <ComboBoxItem Content="Выбор 1" />
    <ComboBoxItem Content="Выбор 2" />
  </ComboBox>
 </Grid>
</Window>

--[testform.ps1 — изменить путь к testform.xml во второй строке]--
Add-Type -AssemblyName presentationframework
$xaml = [xml](Get-Content ".\Documents\testform.xml")
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$Form=[Windows.Markup.XamlReader]::Load( $reader )
$Form.ShowDialog() | out-null


Формы xaml легко редактируются в том же visual studio или даже visual c# express, а на выходе мы получаем без лишних усилий что-то вроде этого:
Спасибо за интересный вариант, но ни MSVS ни VSC#E у меня нет. А применить документацию из пространства System.Windows.Forms к повершеллу оказалось просто и быстро, с подсказками ребят.
XMLный код мне вообще непонятен из-за кучи тегов.
WPF через повершелпак — мне жутко не понравился, я это в после описал
WPF можно без пака и без xml

Add-Type -Assembly PresentationFramework
function add($control, $children)
{
   $children | %{ $control.Children.Add($_)} | Out-Null
   $control
}
$w = New-Object System.Windows.Window -prop @{
    SizeToContent = [System.Windows.SizeToContent]::WidthAndHeight;
    Content = add (New-Object System.Windows.Controls.StackPanel) @(        
        add (New-Object System.Windows.Controls.StackPanel -prop @{ Orientation = [System.Windows.Controls.Orientation]::Horizontal}) @(
            New-Object System.Windows.Controls.Button -prop @{Content="Кнопочка A";}
            New-Object System.Windows.Controls.Button -prop @{Content="Кнопочка Б";}
        )
        New-Object System.Windows.Controls.TextBlock -prop @{Text="Текст"}        
        New-Object System.Windows.Controls.Combobox -prop @{ItemsSource=@("Выбор 1", "Выбор 2")}
    );    
}
$w.ShowDialog()
Заметьте, что в этом коде нет ни одного захардкоженного числа — мы объясняем WPF как расположить элементы управления и оно располагает за нас.

Если вы освоите WPF, то сможете применить эти знания для написания приложений для WP7, и Metro-style приложений в W8.

Я бы конечно в реальности предпочел сделать так, как сделал thunderquack — нарисовать xml в VS или Expression Blend и соединить его потом с кодом.

Еще прило в голову, что если отформатировать сгенерированный XML и убрать лишние атрибуты, то его вполне можно прочитать

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        Title="Заголовочек" 
        Height="146" Width="205">
    <Grid Height="103" Width="180">
        <Button 
            Content="Кнопочка А" 
            HorizontalAlignment="Left" 
            Margin="12,12,0,0" 
            Name="button1" 
            VerticalAlignment="Top" />
        <Button 
            Content="Кнопочка Б" 
            HorizontalAlignment="Left" 
            Margin="93,12,0,0" 
            Name="button2" 
            VerticalAlignment="Top" />
        <TextBlock 
            HorizontalAlignment="Left" 
            Margin="12,41,0,0" 
            Name="textBlock1" 
            Text="Текст" 
            VerticalAlignment="Top" />
        <ComboBox 
            HorizontalAlignment="Left" 
            Margin="12,70,0,0" 
            Name="comboBox1" VerticalAlignment="Top" 
            >
            <ComboBoxItem Content="Выбор 1" />
            <ComboBoxItem Content="Выбор 2" />
        </ComboBox>
    </Grid>
</Window>


а перевод работы желто/красной программы в seamless window не пробовали? и тогда уж можно разделять — уведомления системные по программе — средствами программы. Общение пользователей пусть будет отдано скайпу или почте. всем все видно и все работает
Этот скрипт большей частью написан just for fun :)
для повышения ХР. опять же, уведомление о закрытии баз к обеду — прерогатива поддержки 1С.
а что там умеет или нет 1С — мне и без нее мороки хватает :)
Если Так превычнее бухгалтерии — пусть живет.
А для меня это красивая мордочка к консольным командам.
Опять же, средствами повершелл можно управлять огромнейшей сетью, и делать всё, что угодно — а GUI — я сейчас могу раздать скрипт нашим региональным админам, к примеру, где будет одна кнопка «сбросить пароль» и поле для выбора учетной записи. чтобы они меня не дергали, к примеру.
К этому я и веду, в общем.
PoSh действительно прикольная вещичка, сам пытаюсь почти все свои телодвижения на работе пытаюсь делать через PoSh.
Скрипт интересный, но я так понимаю, что данным скриптом нельзя отправить сообщение, скажем, с Win7 на WinXP или наоборот, т.к. на машинах с XP нет msg.exe а на Win7 нет net send.
Сам сейчас маюсь с написанием такой машинки, что бы раскидывала сообщения на любые машины.
Спасибо за мысль, можно проверять версию ОС и в зависимости от неё запускать net send/msg.
Фразу про «проверить версию ос и в зависимости от неё запускать ...» пропустили?:)
Я имел другое ввиду, но сейчас уже разобрался. Просто не был уверен, что msg.exe отправит на WinXp сообщение. Оказалось — работает. Вам спасибо, а то бы не разобрался))
Ставить же необязательно. Хотя я встречал в инете API net send, возможно оно и не поменялось.
Я сейчас собираюсь активно изучать С#, может попробую этот API использовать напрямую.
при отправке сообщения в консоли можно использовать несколько строк,
но при использовании mesg $User /server:server message такого функционала нет :( ентер там не катит…
Only those users with full accounts are able to leave comments. Log in, please.