Tag: monitor

使用.NET / WMI获取PC的监视器信息

无论如何使用WMI / .Net来获取监视器信息,如制造商,序列号,监视器大小等? 使用脚本也是一个选项,或者我可以直接查询注册表以获取此信息? 在这种情况下, SELECT * FROM Win32_DesktopMonitor并没有真正为我返回任何有用的信息。

从挂起模式唤醒后如何打开显示器?

我需要从睡眠中唤醒PC以使用C#执行某些操作。 我已经使用了CreateWaitableTimer函数,一切都很顺利。 在给定时间,PC唤醒但显示器仍处于省电模式(关闭)! 所以我想知道,唤醒后如何打开显示器? PS我已尝试过“如何打开/关闭显示器/待机状态的完整指南” – 使用SendMessage( Codeproject )和SetThreadExecutionState(ES_DISPLAY_REQUIRED) – 它对我不起作用。 有任何想法吗?

Monitor.Wait需要同步吗?

我已经开发了一个通用的生产者 – 消费者队列,它由Monitor以下列方式产生脉冲: 入队: public void EnqueueTask(T task) { _workerQueue.Enqueue(task); Monitor.Pulse(_locker); } 出队: private T Dequeue() { T dequeueItem; if (_workerQueue.Count > 0) { _workerQueue.TryDequeue(out dequeueItem); if(dequeueItem!=null) return dequeueItem; } while (_workerQueue.Count == 0) { Monitor.Wait(_locker); } _workerQueue.TryDequeue(out dequeueItem); return dequeueItem; } wait部分产生以下SynchronizationLockException:“从非同步代码块调用对象同步方法”我是否需要同步它? 为什么? 使用ManualResetEvents还是Slim版本的.NET 4.0会更好吗?

使用C#向Active Directory注册更改通知

此链接http://msdn.microsoft.com/en-us/library/aa772153(VS.85).aspx说: 您可以在单个LDAP连接上注册最多五个通知请求。 您必须有一个专用线程,等待通知并快速处理它们。 当您调用ldap_search_ext函数来注册通知请求时,该函数将返回标识该请求的消息标识符。 然后使用ldap_result函数等待更改通知。 发生更改时,服务器会向您发送一条LDAP消息,其中包含生成通知的通知请求的消息标识符。 这会导致ldap_result函数返回标识更改对象的搜索结果。 通过.NET文档我找不到类似的行为。 如果有人知道如何在C#中做到这一点,我将非常感谢知道。 我希望看到系统中所有用户的属性发生变化,以便我可以根据更改的内容执行自定义操作。 我查看了stackoverflow和其他来源没有运气。 谢谢。