C#窗体程序,点击按钮通过网络唤醒电脑主机的完整代码
时间: 2024-09-14 19:10:24 浏览: 51
在C#中,创建一个简单的窗体应用程序并使用`System.Net.NetworkInformation.Ping`类发送网络请求来检测远程主机是否可达,然后触发主机的唤醒功能(假设您有一个Windows API函数可以做到这一点),您可以按照以下步骤编写代码:
首先,确保已添加`System.Net.NetworkInformation`命名空间,并且在您的项目中引用了`System.Windows.Forms`。
```csharp
using System;
using System.IO.Ports; // 引入SerialPort用于控制硬件唤醒(如果主机支持)
using System.Net.NetworkInformation;
namespace YourAppName
{
public partial class Form1 : Form
{
private bool isHostOnline = false;
public Form1()
{
InitializeComponent();
}
private void buttonWakeUp_Click(object sender, EventArgs e)
{
// 检查主机在线
Ping pingSender = new Ping();
PingOptions options = new PingOptions() { DontFragment = true };
string hostName = "YourHostIPOrHostName"; // 替换为您需要唤醒的主机地址
try
{
IPAddresse ipAddress = IPAddress.Parse(hostName);
PingReply reply = pingSender.Send(ipAddress, 1000, options);
if (reply.Status == IPStatus.Success)
{
isHostOnline = true;
MessageBox.Show("主机在线,正在尝试唤醒...");
// 假设有一个名为SendWakeSignal的功能,用于唤醒主机
WakeComputer();
}
else
{
MessageBox.Show("主机未在线");
}
}
catch (Exception ex)
{
MessageBox.Show($"检查网络连接异常: {ex.Message}");
}
}
// 假设唤醒主机的函数(这里仅做示例,实际取决于主机实现)
private void WakeComputer()
{
// 如果主机支持串口唤醒,例如Arduino等
SerialPort serialPort = new SerialPort("COM1", 9600); // 这里替换成正确的端口号
serialPort.Open();
serialPort.WriteLine("WakeUpCommand"); // 假设发送这个命令可以唤醒主机
serialPort.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (isHostOnline)
{
// 取消唤醒操作,防止误唤醒
// (此部分代码需视主机的具体唤醒机制而定)
Console.WriteLine("取消唤醒操作...");
}
}
阅读全文