Заголовок



Небольшое пособие, как с помощью WPF и XAML сделать окно неправильной формы.

С помощью WPF и XAML окну можно придать любую форму. Любое изображение любой формы можно сделать окном программы. Изображение должно иметь формат png, его фон должен быть прозрачным.

Это легко сделать в Photoshop.

1. Взять любое изображение, выделить на нем фрагмент, который будет окном нашей программы.
2. Создать новое изображение, обязательно установить галочку "Прозрачность" (Transparency).
3. Перетащить на новое изображение выделенный фрагмент.
4. Сохранить в формате png

Далее в Visual Studio (2008+) создаем новый WPF проект. XAML-описание главного окна программы должно содержать примерно следующее:

<window title="ShapedWindow" windowstartuplocation="CenterScreen"
    allowstransparency="True" opacitymask="White" windowstyle="None"
    background="Transparent"
width="620" height="267"
    xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml
    xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation
    x:class="ShapedWPFForm.ShapedWindow">
    <grid>
        <img name="imgBackground" source="Shape.png" stretch="Fill" />
    </grid>
</window>

Все. Особое внимание уделяем выделенным курсивом фрагментам. Если при компиляции будут возникать ошибки - меняем "allowstransparency" на "AllowsTransparency" или "img" на "Image" и так далее в том же духе )))



Процедура Кнопка1Нажатие(Элемент)
    Shell = Новый COMОбъект("WScript.Shell");
    Shell.SendKeys("{CAPSLOCK}");  //Нажать эту кнопку
    Shell.Run("calc");  //Запустить калькулятор
    Shell.AppActivate("Конфигуратор");  //Сделать активным окно, чье имя начинается с "Конфигуратор"
    Shell.Run(BatFile, 0, -1);  //Запустить батник "BatFile", без открытия DOS окна, c ожиданием окончания работы
КонецПроцедуры


Специальные клавиши = {}   {CAPSLOCK}
Ctrl+A   =  ^(A)
Shift+А  =  +(А)
Alt+А    =  %(А)


-------------------------------------------------------------------------------------------------------------------
Процедура КомандаАПИ(парам1, парам2)
    Shell = Новый COMОбъект("WScript.Shell");
    Shell.Run(парам1, парам2);
КонецПроцедуры


КомандаАПИ("rundll32 shell32, SHHelpShortcuts_RunDLL PrintersFolder", true);  //открыть диалог "Принтеры"
КомандаАПИ("rundll32 SHELL32, SHHelpShortcuts_RunDLL FontsFolder", true);  //открыть диалог "Шрифт"
КомандаАПИ("rundll32 user32, SetCursorPos", true);  //переместить курсор мыши в нижний правый угол
КомандаАПИ("rundll32 user32, mouse_event", true);  //сгенерировать нажатие мыши
КомандаАПИ("rundll32 user32, LockWorkStation", true);  //заблокировать компьютер


-------------------------------------------------------------------------------------------------------------------
Shell = Новый COMОбъект("Shell.Application");  //Свернуть все окна
Shell.MinimizeAll();


-------------------------------------------------------------------------------------------------------------------
КомандаСистемы("shutdown -r");  //перегрузить компьютер
КомандаСистемы("gpedit.msc");  //запуск групповых политик


-------------------------------------------------------------------------------------------------------------------
Cсылки о "WScript.Shell" (WHS, реестр, запуск программ, ярлыки, файловая система, чтение и редактирование файлов, сеть, сетевое окружение, Microsoft Office, Word, Excel)
http://www.forum.mista.ru/topic.php?id=5265&kb=1
http://itland.ru/forum/index.php?showtopic=6096


-------------------------------------------------------------------------------------------------------------------
Создание внешних компонент для 1C с помощью C#, VB.Net, Net Framework
http://kb.mista.ru/article.php?id=56
http://www.kb.mista.ru/article.php?id=62
http://www.rsdn.ru/article/dotnet/cs1c.xml
http://www.rsdn.ru/Forum/Message.aspx?mid=751285