2011-05-04 42 views
6

Windows có tùy chọn cấp nguồn cho một số thiết bị ngoại vi nhất định, chẳng hạn như cổng USB, để tiết kiệm năng lượng (hành vi này có thể được bật/tắt thông qua Trình quản lý Thiết bị). Sức mạnh xảy ra trong các điều kiện khác nhau như khi nắp máy tính xách tay bị đóng. Điều này gây ra một vấn đề cho tôi khi tôi có một giao diện đồ họa nói đến phần cứng gắn vào cổng USB và các liên lạc bị ngắt mỗi khi nắp máy tính xách tay được đóng lại. Có cách nào để lập trình phát hiện sự kiện tắt nguồn (standby?) Này trước khi nó xảy ra và tắt thiết bị USB của tôi một cách duyên dáng hơn? Có cách nào để lập trình cấu hình từng cổng USB của hệ thống để tắt hành vi này không?Phát hiện trạng thái nguồn USB

Hiện tại tôi đang xem SystemEvents.PowerModeChanged, đây có phải là sự kiện phù hợp để phát hiện điều này không?

Trả lời

1

Có vẻ như bạn muốn

  1. WM_POWERBROADCAST (http://msdn.microsoft.com/en-us/library/aa373247(v=vs.85).aspx)
  2. RegisterPowerSettingNotification (http://msdn.microsoft.com/en-us/library/aa373196.aspx)

trước tiên, bạn cần phải gọi RegisterPowerSettingNotification sau đó thông điệp WM_POWERBROADCAST sẽ được nhận bởi applicati của bạn trên.

Trang này có triển khai thực hiện C# của lớp quản lý nguồn bằng các thông báo cửa sổ này. http://www.koders.com/csharp/fid00BAA34B0CAA3E320F9F5A44610A015973BF28ED.aspx?s=nativemethods#L175

+0

Làm cách nào để chuyển đến các thư đó từ lớp C# không phải WinForms? –

+0

Đã cập nhật câu trả lời một chút. Tôi đã không thực sự làm điều này nhưng tôi cho rằng bạn có thể đăng ký RegisterPowerSettingNotification từ bất kỳ lớp học nào – Gavin

+0

http://stackoverflow.com/q/1925237/726631 – Saleh

1

Như đã đề cập trong các áp phích trước RegisterPowerSettingNotification là những gì bạn muốn. Để làm rõ, bạn có thể tham khảo Winforms (System.Windows.Forms.dll) từ các loại ứng dụng .NET khác (console, vv). Bạn có thể truy cập vào một cửa sổ xử lý (để nhận được tin nhắn) bằng cách phân lớp một Winform (các hình thức lớp) và trọng WndProc của nó.

MSDN có very good article khi thực hiện điều đó, cùng với mã ví dụ.

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