2008-12-07 39 views
12

Lần thứ ba máy tính xách tay của tôi chỉ tắt ở giữa trò chơi của tôi vì cáp nguồn của tôi đã bị ngắt kết nối mà tôi không nhận thấy nó.Làm thế nào để phát hiện khi cáp nguồn laptop bị ngắt kết nối?

Bây giờ tôi muốn viết một chương trình C# nhỏ phát hiện khi cáp nguồn của tôi ngắt kết nối và sau đó phát ra một tiếng bíp Hệ thống dài tốt đẹp. Tôi có thể sử dụng API nào cho điều đó?

Trả lời

11

này nên được tầm thường để thực hiện bằng cách sử dụng SystemInformation.PowerStatus tài sản. Và mặc dù nó sống trong Windows.Forms, nó hoàn toàn có thể sử dụng được từ một dịch vụ hệ thống.

Đối với một giải pháp mà cũng hoạt động trên Compact Framework, xem HOWTO: Get the Device Power Status

2

Điều này có thể sẽ bị đóng khi không liên quan đến lập trình, nhưng bạn có thể muốn kiểm tra cài đặt BIOS của mình.

Máy tính xách tay Lenovo của tôi thực hiện chính xác những gì bạn đang đề xuất nguyên bản. Có một cài đặt trong BIOS của tôi cho tiếng bíp khi thay đổi trạng thái nguồn.

+2

Lưu ý cách ông khéo léo diễn đạt nó như một câu hỏi lập trình. Tôi có thể tưởng tượng các trường hợp khác mà một chương trình muốn biết nếu nó đang chạy bằng nguồn pin, vì vậy đây là một câu hỏi hay để có trong cơ sở dữ liệu. –

0

không thể nghĩ ra bất cứ điều gì tiếp cận trực tiếp thông qua các khuôn khổ NET, nhưng tôi biết rằng Intel có SDK nền tảng di động có thư viện .NET cung cấp thông tin này cho bạn. Có thể AMD có một đẳng cấp ở đâu đó.

Intel Mobile Platform SDK

7

SystemEvents.PowerModeChanged. Bạn sẽ cần phải sử dụng GetSystemPowerStatus (xem liên kết trong một trong các câu trả lời) hoặc SystemInformation.PowerStatus (liên kết nằm trong một câu trả lời khác) trong trình xử lý để kiểm tra những gì đã xảy ra.

+0

ans của bạn chỉ là những gì tôi cần thanx :) –

2

Để tiếp tục câu trả lời của BQ, có các cài đặt nguồn trong Windows có thể được thay đổi khi dây nguồn được lấy ra. Vì tôi thỉnh thoảng làm việc với nó nên tôi không thay đổi cài đặt nguồn trên máy, nhưng khi pin tiếp cận 15% độ sáng màn hình được đặt ở mức thấp nhất, làm cho nó có thể hoạt động (và dễ dàng thay đổi bằng phím Fn-Home) nhưng rất đáng chú ý để tôi cắm cáp lại đúng lúc.

1

Dưới đây, là một giải pháp nhỏ: sử dụng cửa sổ C# tạo ứng dụng,

PowerStatus powerStatus = SystemInformation.PowerStatus; 

if (powerStatus.PowerLineStatus == PowerLineStatus.Online) 
{ 
    MessageBox.Show("Running On Power", Convert.ToString(powerStatus.BatteryLifePercent * 100) + "%"); 
} 
else 
{ 
    MessageBox.Show("Running On Battery", Convert.ToString(powerStatus.BatteryLifePercent * 100) + "%"); 
} 

Hope, bạn có ý tưởng, bây giờ bạn có thể sử dụng nó trong bất kỳ cách nào, ......... ..

Các vấn đề liên quan