티스토리 뷰
반응형
[wpf/c#] mvvm 을 활용한 런처(전원 관리 및 파일 관리) 만들기(2/3)
#전원 관리를 위한 UDP 기능 추가
#아이피 가져오기 추가
https://gofogo.tistory.com/114
#Byte Converter 추가(ByteToString)
https://gofogo.tistory.com/113
#UdpHelper 추가
https://gofogo.tistory.com/112
#WakeOnLan 추가
https://gofogo.tistory.com/100
#결과화면#
#기능
-타이틀 : 내용 바인딩(기본 바인딩 소개를 위한 화면)
-전원 켜기 : Wake On Lan을 이용한 특정 맥어드레스 전원 켜기
-전원 끄기: Process를 활용하여 shell shutdown을 이용하여 전원 끄기 기능(재부팅 기능포함)
#MainViewModel
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
MyIp = NetworkHelper.GetMyIpAddress();
SendIp = "192.168.0.75";
Title = "런처 테스트";
MacAddress = "B06EBF1EBB75";
OnTurnOnCommand = new RelayCommand(OnTurnOnCommandAction, null);
OnTurnOffCommand = new RelayCommand(OnTurnOffCommandAction, null);
UdpHelper.Instance.PacketReceiveEventHandlerEvent += Instance_PacketReceiveEventHandlerEvent;
}
private void Instance_PacketReceiveEventHandlerEvent(string code)
{
switch (code)
{
case "restart":
PowerManager.Instance.Restart();
break;
case "close":
PowerManager.Instance.Close();
break;
default:
break;
}
}
private string _title;
public string Title
{
get { return _title; }
set
{
_title = value;
RaisePropertyChanged("Title");
}
}
private string _myip;
public string MyIp
{
get { return _myip; }
set
{
_myip = value;
RaisePropertyChanged("MyIp");
}
}
private string _sendip;
public string SendIp
{
get { return _sendip; }
set
{
_sendip = value;
RaisePropertyChanged("SendIp");
}
}
private string _macaddress;
public string MacAddress
{
get { return _macaddress; }
set
{
_macaddress = value;
RaisePropertyChanged("MacAddress");
}
}
public RelayCommand OnTurnOnCommand { get; set; }
private void OnTurnOnCommandAction()
{
WakeOnLan wol = new WakeOnLan();
wol.TurnOnPC("B06EBF1EBB75");
MessageBox.Show($"{MacAddress}의 전원이 켜졌습니다");
}
public RelayCommand OnTurnOffCommand { get; set; }
private void OnTurnOffCommandAction()
{
UdpHelper.Instance.SendWithIP("close", "192.168.0.75", 11699);
}
}
#MainView
<Window x:Class="Launcher_SE.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Launcher_SE"
mc:Ignorable="d"
DataContext="{Binding Source={StaticResource Locator}, Path=MainViewModel}"
Title="Launcher" Height="450" Width="800">
<StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,10,20,0">
<TextBlock Text="나의 아이피: " VerticalAlignment="Bottom"/>
<TextBlock Text="{Binding MyIp}" Foreground="CornflowerBlue" FontWeight="Bold" />
</StackPanel>
<StackPanel Margin="30,30,100,0">
<Grid Height="30">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="타이틀" VerticalAlignment="Center" Margin="1,0,5,0" Foreground="#FF585858" FontWeight="Bold"/>
<TextBox Grid.Column="1" Text="{Binding Title,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" VerticalContentAlignment="Center" Margin="2" Padding="5,0"/>
<Rectangle Stroke="#FF828282" Margin="2" Grid.Column="1"/>
</Grid>
<Rectangle Stroke="#FF828282" Height="1" StrokeDashArray="2 2" Margin="0,5"/>
<TextBlock Text="-시스템 전원이 부팅됩니다-" HorizontalAlignment="Right" VerticalAlignment="Bottom" Foreground="Red"/>
<Grid Height="30">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
</Grid.ColumnDefinitions>
<Rectangle Stroke="{DynamicResource Gray125Brush}" Margin="2" Grid.Column="1"/>
<TextBlock Text="전원 켜기" VerticalAlignment="Center" Margin="1,0,5,0" Foreground="#FF585858" FontWeight="Bold"/>
<TextBox VerticalAlignment="Center" Margin="30,0" Grid.Column="1" Text="{Binding MacAddress}" />
<Button Content="On" Grid.Column="2" Margin="2" Command="{Binding OnTurnOnCommand}" CommandParameter="00"/>
</Grid>
<Grid Height="30">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition/>
<ColumnDefinition Width="80"/>
</Grid.ColumnDefinitions>
<Rectangle Stroke="{DynamicResource Gray125Brush}" Margin="2" Grid.Column="1"/>
<TextBlock Text="전원 끄기" VerticalAlignment="Center" Margin="1,0,5,0" Foreground="#FF585858" FontWeight="Bold"/>
<TextBox VerticalAlignment="Center" Margin="30,0" Grid.Column="1" Text="{Binding SendIp}" />
<Button Content="Off" Grid.Column="2" Margin="2" Command="{Binding OnTurnOffCommand}" CommandParameter="00"/>
</Grid>
</StackPanel>
</StackPanel>
</Window>
#Library - PowerManager
public class PowerManager
{
private static PowerManager _instance { get; set; }
public static PowerManager Instance
{
get
{
return _instance ?? (_instance = new PowerManager());
}
}
public void Restart()
{
Process.Start("Shutdown.exe", "-r -f -t 00");
}
public void Close()
{
Process.Start("Shutdown.exe", "-s -f -t 00");
}
}
#PowerManager #Launcher #전원관리 #컴퓨터 켜기 #컴퓨터 끄기 #c# #wpf #unity
반응형
'c#' 카테고리의 다른 글
[unity/ wpf/c#] newton json Serialize/deSerialize(ToJson/ToObject) 엄청 쉽게 하는법 (0) | 2022.03.16 |
---|---|
[c#/wpf/mvvm] [wpf/c#] mvvm 을 활용한 런처(전원 관리 및 파일 관리) 만들기(3/3) FTP 파일 다운로드 / 앱 자동 실행 / Config파일 (0) | 2022.03.02 |
[c#/wpf/unity] 나의 아이피 주소 가져오기 헬퍼구현 (0) | 2022.03.02 |
[c#/wpf/winform/unity] Byte to String / String to Byte 로 변환 컨버팅 (0) | 2022.03.02 |
[c#/wpf/winform] UDPHelper구현(server/client) (0) | 2022.03.02 |
댓글
반응형