2008-12-17 27 views
9

Tôi đã cài đặt Windows Server 2008 trên máy tính xách tay Sony và điều khiển độ sáng không hoạt động. Tôi muốn viết một chương trình để cho phép tôi thay đổi nó. Hiện tại những gì tôi phải làm là mở bảng điều khiển Power, nhấp vào cài đặt nâng cao và chiến đấu qua rất nhiều hộp UAC mà bất kỳ ai đang xem tôi đều phải nghĩ rằng tôi hoàn toàn điên rồ.Tôi sẽ sử dụng cuộc gọi API nào để thay đổi độ sáng của máy tính xách tay (.NET)?

Tôi chỉ muốn có một chương trình nhỏ đơn giản để làm điều đó nhưng tôi không biết những gì API để gọi

Trả lời

9

Tôi nhìn lên liên kết John Rudy 's để WmiSetBrightness trong MSDN và đến với điều này:

ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods"); 
mclass.Scope = new ManagementScope(@"\\.\root\wmi"); 
ManagementObjectCollection instances = mclass.GetInstances(); 

// I assume you get one instance per monitor 
foreach(ManagementObject instance in instances) 
{ 
    ulong timeout = 1; // in seconds 
    ushort brightness = 50; // in percent 
    object[] args = new object[] { timeout, brightness }; 
    instance.InvokeMethod("WmiSetBrightness", args); 
} 

Lưu ý: ManagementClass, ManagementObjectCollection, và ManagementObject tất cả thực hiện IDisposable. Bạn nên gọi Dispose() hoặc sử dụng "using" để tránh rò rỉ tài nguyên.

2

Đây chỉ là vista:

http://msdn.microsoft.com/en-us/library/ms775232.aspx

Bạn cần phải xác định màn hình với GetPhysicalMonitorsFromHMONITOR trước khi thiết lập độ sáng của nó với SetMonitorBrightness. Tôi nghi ngờ không ai thực hiện nó trước đây trong. Net vì vậy bạn có thể sẽ cần phải viết interop của riêng bạn. Các api không xuất hiện để được đặc biệt khó khăn, do đó bạn sẽ có thể làm điều đó khá dễ dàng.

+0

Vista và Server 2008 – Lucas

1

Theo như tôi biết, không có API được quản lý (.NET) cho việc này. Tuy nhiên, đối với Vista, có các API không được quản lý có sẵn thông qua interop. Xem MSDN: Monitor Configuration APIsWmiSetBrightness.

Có thể có cách quản lý để nhấn phương pháp WmiSetBrightness, nhưng tôi không biết về chúng.

Nếu bạn không ở trên Vista hoặc Server 2008, bạn đang ở trong một thế giới khó chịu: Cấu hình phần mềm sẽ phải được thực hiện trực tiếp thông qua trình điều khiển màn hình. Dựa trên đề cập đến UAC của bạn ở trên, tôi nghi ngờ đây không phải là trường hợp cho bạn, nhưng anh chàng tiếp theo có thể muốn biết. :)

+0

+1, tôi dựa trên câu trả lời của bạn về bạn;) – Lucas

0

Để thêm vào câu trả lời của DaEagles, trang web http://www.pinvoke.net/ có thể là trình tiết kiệm cuộc sống khi làm việc với win32-apis trong .Net. Nếu thông tin không tồn tại ở đó, vui lòng thêm nó khi bạn đã thực hiện thành công interop cho .Net.

1

Chỉ cần một nhà động não ở đây ... Trên máy tính xách tay, bạn có thể thay đổi độ sáng bằng cách sử dụng một số kombinations phím trên bàn phím. Bạn có thể gửi các phím bấm này nếu bạn chỉ muốn làm cho nó tối hơn/sáng hơn và không phải đặt nó thành một giá trị cụ thể.

+1

vấn đề là sony ngu ngốc có trình điều khiển cho độ sáng (không dựa trên phần cứng). tôi chỉ không thể làm cho nó làm việc với máy chủ 2008 với UAC. không bao giờ thử mà không có –

+0

cos bạn biết bạn thực sự cần một dấu hiệu trên màn hình mà độ sáng đã thay đổi. và một tiếng bíp. tôi đã kiểm soát âm lượng làm việc, nhưng độ sáng không –

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