Я проверил тебя, учитывая xpaths
, я не знаю, что они ошибаются или на самом деле ошибаются.
Например,
xpath = //*="main"]/div/span/div/div/div[2]/table/tbody/tr['+str(i)+']/td[3]/strong/text()
#There is not table when you reach at div[2]
//div[@class="title_wrapper"])/h1/text() #here there is and error after `]` ) is bad syntax
Кроме того, ваши xpaths не дают никаких результатов.
Я посмотрел ссылку Джона Руди на WmiSetBrightness в MSDN и придумал следующее:
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);
}
Примечание: ManagementClass
, ManagementObjectCollection
и ManagementObject
все реализуют IDisposable
. Вам следует вызвать Dispose ()
или использовать « using
», чтобы избежать утечки ресурсов.
Это - перспектива только:
http://msdn.microsoft.com/en-us/library/ms775232.aspx
Необходимо отождествить монитор с GetPhysicalMonitorsFromHMONITOR прежде, чем установить его яркость с SetMonitorBrightness. Я подозреваю, что никто не сделал это прежде в .NET, таким образом, необходимо будет, вероятно, записать собственный interop. API, кажется, не является особенно трудным, таким образом, необходимо смочь сделать это довольно легко.
Насколько я знаю, существует не управляется (.NET) API для этого. Однако для Vista, существуют неуправляемые API, доступные через interop. См. MSDN: API Конфигурации Монитора и WmiSetBrightness.
Могут быть управляемые способы поразить метод WmiSetBrightness, но я не знаю о них.
Если Вы не находитесь на Vista или Сервере 2008, Вы находитесь в для мира неприятности: конфигурация программного обеспечения должна была бы быть реализована непосредственно через драйвер монитора. На основе Вашего упоминания контроль учётных записей выше, я подозреваю, что это не имеет место для Вас, но следующий парень мог бы хотеть знать.:)
Просто участник коллективного обсуждения здесь... На ноутбуке можно изменить яркость с помощью некоторого ключа-kombinations на клавиатуре. Должно быть возможно отправить те keyspresses, Если Вы просто хотите сделать это более темным/легче и не иметь для установки его на определенное значение.
Для добавления к ответу DaEagles сайт http://www.pinvoke.net/ может быть жизненным средством сохранения при работе с win32-пчелой в .NET. Если информация не существует там, добавьте его при создании успешного interop для .NET.