Pull to refresh

Comments 37

Прошу прощения за битое форматирование.
Надеюсь, что это кому-то поможет
Что приятнее конечному пользователю:
Непонятная консоль (которую надо знать)
Или же ввести текст в графический интерфейс?
Мне, как конечному пользователю всегда приятнее использовать стандартные формы передачи сообщений.
Простите, что значит «стандартная форма передачи сообщений»?
У нас в компании официальная почта, затем аська/скайп. Уведомления, которые рассылаются службой поддержки 1С — стандартны для пользователей 1С, поскольку если окно TSC открыто на весь экран (а в бухгалтерии это чуть ли не штатная ситуация 99% рабочего времени) ни всплывающее окно аутлука, ни аськи ни скайпа не будет замечено в 90% случаев.
В отличие от окошка по центру экрана, которое перекрывает платежку/проводку и т.п.
Кстати реакцию на нажатие ОК в этом окне можно попробовать отловить и обработать, но это уже другая история…
По роду деятельности я стараюсь избегать работающих с 1с и подобными продуктами (читать: украинский сектор), поэтому плаваю в потребностях пользователей 1с, и даже не подозревал что кому-то может понадобиться возвращение в win95 с его pop-up. Если у Вас, как и у большинства официальная почта, потом аська/скайп, то логично предположить что и приоритет у этих систем соответствующий: почта, аська/скайп, все остальное. Если кто-то не умеет оперативно пользоваться почтой то это другой разговор. Я высказываю лично свое мнение, и подобного рода финты, я бы отключил и не принимал во внимание до официального письма в почте. Лично мне не нравятся pop-up, они у меня в браузере тоже выключены, а у Вас?
Видите ли, ПопАп об обновлениях 1С это немного другое. обзванивать стопицот пользователей — не выход, а письма в почту половина из них пропустит по причине полноэкранного режима клиента RDP
Мы говорим немного о разных вещах. Я говорю что у каждого есть свои официальные обязанности и свои официальные правила. Соответственно если в правилах написано: официальный способ общения — почта, то это не повод вообще кого-то обзванивать, это больше повод кого-то штрафовать. Есть правила их надо выполнять. Новый человек, который приходит в компанию не должен тонуть в разнообразных негласных фичах, и потом оправдываться что был не прав, поп-апы не читал. Хотя Дело Ваше, Написано в правилах официальный способ общения — поп-ап, я думаю никто из сторонних наблюдателей не будет против, так возможно зададутся вопросом, как я, не более того.
Да, все таки о разных вещах.
Потому как в разных отделах могут быть разные штуки. не смотря на корпоративный стандарт — почту.
Сам очень часто работаю по рдп, проверять регулярно почту обязательно. Но у такого способа есть плюс, работая по рдп бухгалтер не будут смотреть в почту каждые 5 минут. А если админу или 1с прогерам необходимо чтобы все корректно вышли из 1с? самым быстрым будет обзвон отделов или вот такое решение как описал автор.
Win95 тут ни при чем, это стандартный net send $)
Ну возможно тем кто работает с более чем 10-ю терминальными серверами это и будет полезно, но мне с 3-я серверами пока хватало net send'a и без GUI…
Вам, но не нашим 1Сникам :) а net send'а в семерке и нету.
Хм… чего-то я не понял…
net send нужен на терминальном сервере с серверной виндой. Причём тут семёрка?
да, net send нет = вместо него есть msg, обертку к которому я и нарисовал
ленивая у вас служба поддержки «некоей желтой программы».
средствами самой одинэсины прекрасненько организуется и обмен сообщениями (сключая рассылку) по всем рабочим сеансам, и отключение сеансов (с таймаутом если нужно).
(если не лениться — даже можно хоть 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.
А разве можно, скажем, на Win7 установить net send? Или msg на WinXP?
Фразу про «проверить версию ос и в зависимости от неё запускать ...» пропустили?:)
Я имел другое ввиду, но сейчас уже разобрался. Просто не был уверен, что msg.exe отправит на WinXp сообщение. Оказалось — работает. Вам спасибо, а то бы не разобрался))
Ставить же необязательно. Хотя я встречал в инете API net send, возможно оно и не поменялось.
Я сейчас собираюсь активно изучать С#, может попробую этот API использовать напрямую.
при отправке сообщения в консоли можно использовать несколько строк,
но при использовании mesg $User /server:server message такого функционала нет :( ентер там не катит…
Sign up to leave a comment.

Articles