當屏幕保護程序打開/關閉時,我想要接收SENS事件。我的代碼是基於this文章:在.NET中接收SENS事件
private static readonly string GUID = "{" + typeof(ScreensaverHandler).GUID.ToString() + "}";
[ComImport, Guid("4E14FBA2-2E22-11D1-9964-00C04FBBB345")]
private class EventSystem { }
[ComImport, Guid("7542E960-79C7-11D1-88F9-0080C7D771BF")]
private class EventSubcription { }
[ComImport, Guid("AB944620-79C6-11d1-88F9-0080C7D771BF")]
private class EventPublisher { }
[ComImport, Guid("cdbec9c0-7a68-11d1-88f9-0080c7d771bf")]
private class EventClass { }
public ScreensaverHandler() {
IEventSystem es = (IEventSystem) new EventSystem();
IEventSubscription sub = (IEventSubscription) new EventSubcription();
sub.Description = "description";
sub.SubscriptionName = "subscriptionname";
sub.SubscriptionID = GUID;
sub.InterfaceID = GetInterfaceGuid(typeof(SensEvents.ISensLogon));
sub.SubscriberInterface = this; // implements SensEvents.ISensLogon
es.Store("EventSystem.EventSubscription", sub);
}
private static string GetInterfaceGuid(Type type) {
object[] attributes = type.GetCustomAttributes(typeof(GuidAttribute), true);
return "{" + ((GuidAttribute)attributes[0]).Value + "}";
}
的問題是,es.Store
投用Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
什麼是操作系統?如果Vista或7,那麼你可能想要以管理員權限執行此代碼(VS作爲管理員權限或可執行文件本身的管理員權限) – 2012-01-01 05:11:57
@Ron對不起,應該提到一個。 Windows 7和是與管理員權限運行修復它 – Voo 2012-01-01 05:20:29