WPF 秒表 计时器 定时关机 到计时关机
public const uint WM_SYSCOMMAND = 0x0112;
public const uint SC_MONITORPOWER = 0xF170;
[DllImport("user32")]
public static extern IntPtr SendMessage(IntPtr hWnd, uint wMsg, uint wParam, int lParam);
///
/// 关闭显示器
///
public void CloseScreen()
{
IntPtr windowHandle = Process.GetCurrentProcess().MainWindowHandle;
SendMessage(windowHandle, WM_SYSCOMMAND, SC_MONITORPOWER, 2); // 2 为关闭显示器, -1则打开显示器
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using IniFiles;
namespace StopWatch
{
///
/// shutdonwCtrl.xaml 的交互逻辑
///
public partial class shutdonwCtrl : UserControl
{
DispatcherTimer timer1;
DispatcherTimer timer2;
public shutdonwCtrl()
{
InitializeComponent();
timer1 = new DispatcherTimer();
timer1.Tick += new EventHandler(OnTimer1);
timer1.Interval = new TimeSpan(0, 0, 1);
timer2 = new DispatcherTimer();
timer2.Tick += new EventHandler(OnTimer2);
timer2.Interval = new TimeSpan(0, 0, 1);
btn_cancel.IsEnabled = false;
cancel1.IsEnabled = false;
}
IniFile INI = new IniFile(IniFile.AppIniName);
public void LoadIni()
{
cbo_hour.Text = INI.ReadString("定时关机", "时", "0");
cbo_Minute.Text = INI.ReadString("定时关机", "分", "0");
cbo_Second.Text = INI.ReadString("定时关机", "秒", "0");
cbo1.Text = INI.ReadString("到计时关机", "分", "0");
//combobox1.Text = INI.ReadString("到计时", "时", "0");
//combobox2.Text = INI.ReadString("到计时", "分", "0");
//combobox3.Text = INI.ReadString("到计时", "秒", "0");
}
public void SaveIni()
{
INI.WriteString("定时关机", "时", cbo_hour.Text);
INI.WriteString("定时关机", "分", cbo_Minute.Text);
INI.WriteString("定时关机", "秒", cbo_Second.Text);
INI.WriteString("到计时关机", "分", cbo1.Text);
}
private void ShutDown()
{
System.Diagnostics.Process.Start("shutdown.exe", "-s -t 1");
}
private void OnTimer1(object sender,EventArgs e)
{
if (second > 0)
second--;
label1.Content = string.Format("Windows将在 {0} 关机", TimerClass.GetTimeString1(second));
if (second <= 0 && !cbo1.IsEnabled)
{
ShutDown();
}
}
int second = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
second = Convert.ToInt32(cbo1.Text) * 60;
if (second <= 0)
{
MessageBox.Show("数值必须大于0!");
return;
}
timer1.Start();
cbo1.IsEnabled = false;
cancel1.IsEnabled = true;
start1.IsEnabled = false;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
label1.Content = " ";
timer1.Stop();
second = 0;
cbo1.IsEnabled = true;
cancel1.IsEnabled = false;
start1.IsEnabled = true;
}
private void OnTimer2(object sender, EventArgs e)
{
if ( DateTime.Now.Hour == Convert.ToInt32(cbo_hour.Text) &&
DateTime.Now.Minute == Convert.ToInt32(cbo_Minute.Text) &&
DateTime.Now.Second == Convert.ToInt32(cbo_Second.Text)
)
{
ShutDown();
}
}
private void Button_Click_2(object sender, RoutedEventArgs e)
{
int s = Convert.ToInt32(cbo_hour.Text) * 3600 + Convert.ToInt32(cbo_Minute.Text) * 60 + Convert.ToInt32(cbo_Second.Text);
timer2.Start();
label2.Content = string.Format("Windows将在 {0} 关机", TimerClass.GetTimeString1(s));
btn_start.IsEnabled = false;
btn_cancel.IsEnabled = true;
cbo_hour.IsEnabled = false;
cbo_Minute.IsEnabled = false;
cbo_Second.IsEnabled = false;
}
private void btn_cancel_Click(object sender, RoutedEventArgs e)
{
label2.Content = "";
timer2.Stop();
btn_start.IsEnabled = true;
btn_cancel.IsEnabled = false;
cbo_hour.IsEnabled = true;
cbo_Minute.IsEnabled = true;
cbo_Second.IsEnabled = true;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading.Tasks;
using System.Runtime.InteropServices;
using System.Windows.Threading;
using IniFiles;
namespace StopWatch
{
///
/// TimerCtrl.xaml 的交互逻辑
///
public partial class TimerCtrl : UserControl
{
private DispatcherTimer timer1 = null;
private DispatcherTimer timer2 = null;
int SND_SYNC = 0x0000; /* play asynchronously */ //异步
int SND_ASYNC = 0x0001;
int SND_LOOP = 8;
[DllImport("winmm")]
public static extern bool PlaySound(string szSound, IntPtr hMod, int flags);
private void playSound3()
{
Task tsk = new Task(new Action(proc));
tsk.Start();
}
private void proc()
{
PlaySound(@"Sound\2.wav", IntPtr.Zero, SND_SYNC);
PlaySound(@"Sound\2.wav", IntPtr.Zero, SND_SYNC);
PlaySound(@"Sound\2.wav", IntPtr.Zero, SND_SYNC);
}
public TimerCtrl()
{
InitializeComponent();
timer1 = new DispatcherTimer();
timer1.Tick += new EventHandler(OnTimer1);
timer1.Interval = new TimeSpan(0, 0, 1);
timer2 = new DispatcherTimer();
timer2.Tick += new EventHandler(OnTimer2);
timer2.Interval = new TimeSpan(0, 0, 1);
btn_reset1.IsEnabled = false;
btn_pause1.IsEnabled = false;
}
int h = 0;
int m = 0;
int s = 0;
int seconds = 0;
private void OnTimer1(object sender, EventArgs e)
{
if (seconds < 1)
{
PlaySound(@"Sound\2.wav", IntPtr.Zero, SND_ASYNC);
btn_start.IsEnabled = false;
btn_reset1.IsEnabled = true;
btn_pause1.IsEnabled = false;
combobox1.IsEnabled = true;
combobox2.IsEnabled = true;
combobox3.IsEnabled = true;
return;
}
seconds--;
label1.Content = TimerClass.GetTimeString1(seconds);
}
private void btn_start_Click(object sender, RoutedEventArgs e)
{
h = Convert.ToInt32(combobox1.Text);
m = Convert.ToInt32(combobox2.Text);
s = Convert.ToInt32(combobox3.Text);
seconds = h * 3600 + m * 60 + s;
label1.Content = TimerClass.GetTimeString1(seconds);
timer1.Start();
btn_start.IsEnabled = false;
btn_reset1.IsEnabled = true;
btn_pause1.IsEnabled = true;
combobox1.IsEnabled = false;
combobox2.IsEnabled = false;
combobox3.IsEnabled = false;
}
private void btn_reset_Click(object sender, RoutedEventArgs e)
{
seconds = 0;
label1.Content = TimerClass.GetTimeString1(seconds);
timer1.Stop();
btn_start.IsEnabled = true;
btn_reset1.IsEnabled = false;
btn_pause1.IsEnabled = false;
combobox1.IsEnabled = true;
combobox2.IsEnabled = true;
combobox3.IsEnabled = true;
}
private void pause1_Click(object sender, RoutedEventArgs e)
{
if (btn_pause1.Content.ToString() == "暂停")
{
timer1.Stop();
btn_pause1.Content = "继续";
}
else
{
timer1.Start();
btn_pause1.Content = "暂停";
}
}
int SEC = 0;
private void OnTimer2(object sender, EventArgs e)
{
if (SEC < 1)
{
timer2.Stop();
playSound3();
btn_quick.IsEnabled = true;
btn_cancel2.IsEnabled = false;
combobox4.IsEnabled = true;
return;
}
SEC--;
label4.Content = TimerClass.GetTimeString1(SEC);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
SEC = Convert.ToInt32(combobox4.Text) * 60;
timer2.Start();
combobox4.IsEnabled = false;
btn_quick.IsEnabled = false;
btn_cancel2.IsEnabled = true;
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
SEC = 2;
label4.Content = "00:00:00";
timer2.Stop();
combobox4.IsEnabled = true;
btn_quick.IsEnabled = true;
}
IniFile INI = new IniFile(IniFile.AppIniName);
public void LoadIni()
{
combobox1.Text = INI.ReadString("到计时", "时", "0");
combobox2.Text = INI.ReadString("到计时", "分", "0");
combobox4.Text = INI.ReadString("快速计时", "分", "0");
}
public void SaveIni()
{
INI.WriteString("到计时", "时", combobox1.Text);
INI.WriteString("到计时", "分", combobox2.Text);
INI.WriteString("到计时", "秒", combobox3.Text);
INI.WriteString("快速计时", "分", combobox4.Text);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;
using System.Windows.Threading;
namespace StopWatch
{
///
/// WatchCtrl.xaml 的交互逻辑
///
public partial class WatchCtrl : UserControl
{
public WatchCtrl()
{
InitializeComponent();
timer1 = new DispatcherTimer();
timer1.Tick += new EventHandler(OnTimer1);
timer1.Interval = new TimeSpan(0, 0, 1);
timer1_1 = new DispatcherTimer();
timer1_1.Tick += new EventHandler(OnTimer1_1);
timer1_1.Interval = new TimeSpan(0, 0, 0, 100);
timer2 = new DispatcherTimer();
timer2.Tick += new EventHandler(OnTimer2);
timer2.Interval = new TimeSpan(0, 0, 1);
}
private DispatcherTimer timer1 = null;
private DispatcherTimer timer1_1 = null;
private DispatcherTimer timer2 = null;
private void OnTimer1(object sender, EventArgs e)
{
second++;
label1.Content = TimerClass.GetTimeString1(second) ;//DateTime.Now.ToString("h:mm:ss");
}
public int second = 0;
private int second1 = 0;
public int count = 0;
private void OnTimer1_1(object sender, EventArgs e)
{
//label1.Content = TimerClass.GetTimeString1(second) + "." + count.ToString();//DateTime.Now.ToString("h:mm:ss");
//count++;
//if (count > 9)
// count = 0;
}
private void OnTimer2(object sender, EventArgs e)
{
second1++;
label2.Content = TimerClass.GetTimeString1(second1) ;//.ToString("h:mm:ss");
}
private void btn_start_Click(object sender, RoutedEventArgs e)
{
timer1.Start();
timer2.Start();
if (btn_start.Content.ToString() == "停止")
{
btn_start.Content = "开始";
btn_reset.Content = "复位";
timer1.Stop();
timer2.Stop();
}
else
{
btn_start.Content = "停止";
btn_reset.Content = "计次";
}
}
private int counter = 0;
private void btn_reset_Click(object sender, RoutedEventArgs e)
{
if (btn_reset.Content.ToString() == "复位")
{
second = 0;
second1 = 0;
label1.Content = "00:00:00";
label2.Content = "00:00:00";
timer1.Stop();
timer2.Stop();
}
else
{
if (second1 > 0)
{
counter++;
listbox1.Items.Add(string.Format(" {0}\t{1}", counter, label2.Content));
}
second1 = 0;
label2.Content = "00:00:00";
}
if (btn_reset.Content.ToString() == "复位" && btn_start.Content.ToString()=="开始")
{
listbox1.Items.Clear();
}
}
}
}