diff --git a/Trigger/Tasks/Plugins/Logs/LogCommandLineEvents.cs b/Trigger/Tasks/Plugins/Logs/LogCommandLineEvents.cs
new file mode 100644
index 0000000..d9e5d09
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogCommandLineEvents.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace Trigger.Tasks.Plugins
+{
+ ///
+ /// Logs all events from command line
+ ///
+ class LogCommandLineEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ Main.CommandLineTrigger += new Events.EventPlugin.EventValue(Main_CommandLineTrigger);
+
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Main.CommandLineTrigger -= new Events.EventPlugin.EventValue(Main_CommandLineTrigger);
+ }
+ #endregion
+
+ #region Event handlers
+ private void Main_CommandLineTrigger(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Trigger from command line: 0x" + e.Value.ToString("X4"), Trigger.Log.Type.CommandLineEvent);
+ }
+ #endregion
+ }
+}
diff --git a/Trigger/Tasks/Plugins/Logs/LogDeviceEvents.cs b/Trigger/Tasks/Plugins/Logs/LogDeviceEvents.cs
new file mode 100644
index 0000000..811b6c5
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogDeviceEvents.cs
@@ -0,0 +1,93 @@
+using System;
+using System.Drawing;
+using Microsoft.Win32;
+using System.Windows.Forms;
+using Trigger.Classes.Device;
+
+namespace Trigger.Tasks
+{
+ ///
+ /// Logs all events from
+ ///
+ class LogDeviceEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ if (!Main.EventMgr.PluginExists())
+ {
+ this.Log.LogLine("Task \"LogDeviceEvents\" is missing EventPlugin \"Device\"!", Log.Type.Error);
+ return false;
+ }
+
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ swInit.Stop();
+ Events.Device deviceEvents = Main.EventMgr.GetPlugin(new object[] {Main}, true);
+ swInit.Start();
+
+ deviceEvents.DeviceArrived += new Events.EventPlugin.EventValue(devEvents_DeviceArrived);
+ deviceEvents.DeviceQueryRemove += new Events.EventPlugin.EventValue(devEvents_DeviceQueryRemove);
+ deviceEvents.DeviceQueryRemoveFailed += new Events.EventPlugin.EventValue(devEvents_DeviceQueryRemoveFailed);
+ deviceEvents.DeviceRemoved += new Events.EventPlugin.EventValue(devEvents_DeviceRemoved);
+ deviceEvents.MediaInserted += new Events.EventPlugin.EventValue(devEvents_MediaInserted);
+ deviceEvents.NetworkVolumeArrived += new Events.EventPlugin.EventValue(devEvents_NetworkVolumeArrived);
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Events.Device devEvents = this.Main.EventMgr.GetPlugin(new object[] {Main}, true);
+ devEvents.DeviceArrived -= new Events.EventPlugin.EventValue(devEvents_DeviceArrived);
+ devEvents.DeviceQueryRemove -= new Events.EventPlugin.EventValue(devEvents_DeviceQueryRemove);
+ devEvents.DeviceQueryRemoveFailed -= new Events.EventPlugin.EventValue(devEvents_DeviceQueryRemoveFailed);
+ devEvents.DeviceRemoved -= new Events.EventPlugin.EventValue(devEvents_DeviceRemoved);
+ devEvents.MediaInserted -= new Events.EventPlugin.EventValue(devEvents_MediaInserted);
+ devEvents.NetworkVolumeArrived -= new Events.EventPlugin.EventValue(devEvents_NetworkVolumeArrived);
+ }
+ #endregion
+
+
+ #region Event handlers
+ private void devEvents_DeviceArrived(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("New device arrived: " + e.Value.Model, Trigger.Log.Type.DeviceEvent);
+ }
+
+ private void devEvents_DeviceQueryRemove(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Device is queried to be removed: " + e.Value.Model, Trigger.Log.Type.DeviceEvent);
+ }
+
+ private void devEvents_DeviceQueryRemoveFailed(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Device could not be removed: " + e.Value.Model, Trigger.Log.Type.DeviceEvent);
+ }
+
+ private void devEvents_DeviceRemoved(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("A device was removed: " + e.Value.Model, Trigger.Log.Type.DeviceEvent);
+ }
+
+ private void devEvents_MediaInserted(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Media inserted in " + e.Value.Model, Trigger.Log.Type.DeviceEvent);
+ }
+
+ private void devEvents_NetworkVolumeArrived(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("New network volume arrived: " + e.Value.Model, Trigger.Log.Type.DeviceEvent);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Trigger/Tasks/Plugins/Logs/LogNetworkEvents.cs b/Trigger/Tasks/Plugins/Logs/LogNetworkEvents.cs
new file mode 100644
index 0000000..8c45618
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogNetworkEvents.cs
@@ -0,0 +1,94 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net.NetworkInformation;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Trigger.Tasks
+{
+ ///
+ /// Logs all events from
+ ///
+ class LogNetworkEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ if (!Main.EventMgr.PluginExists())
+ {
+ this.Log.LogLine("Task \"LogNetworkEvents\" is missing EventPlugin \"Network\"!", Log.Type.Error);
+ return false;
+ }
+
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ swInit.Stop();
+ Events.Network networkEvents = Main.EventMgr.GetPlugin();
+ swInit.Start();
+
+ networkEvents.NetworkAvailabilityChanged += networkEvents_NetworkAvailabilityChanged;
+ networkEvents.NetworkInterfaceAdded += networkEvents_NetworkInterfaceAdded;
+ networkEvents.NetworkInterfaceRemoved += networkEvents_NetworkInterfaceRemoved;
+ networkEvents.IpAddressChanged += networkEvents_IpAddrChanged;
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Events.Network networkEvents = this.Main.EventMgr.GetPlugin();
+
+ networkEvents.NetworkAvailabilityChanged -= networkEvents_NetworkAvailabilityChanged;
+ networkEvents.NetworkInterfaceAdded -= networkEvents_NetworkInterfaceAdded;
+ networkEvents.NetworkInterfaceRemoved -= networkEvents_NetworkInterfaceRemoved;
+ networkEvents.IpAddressChanged -= networkEvents_IpAddrChanged;
+ }
+ #endregion
+
+
+ #region Event handlers
+ private void networkEvents_IpAddrChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("IP changed: " + e.OldValue.Name + ":", Log.Type.NetworkEvent);
+ UnicastIPAddressInformationCollection ipsOld = e.OldValue.GetIPProperties().UnicastAddresses;
+ UnicastIPAddressInformationCollection ipsNew = e.NewValue.GetIPProperties().UnicastAddresses;
+ for (int i = 0; i < Math.Max(ipsOld.Count, ipsNew.Count); i++)
+ {
+ if (ipsOld.Count > i)
+ this.Log.LogTextDate(ipsOld[i].Address.ToString().PadRight(40), Log.Type.NetworkEvent);
+ else
+ this.Log.LogTextDate(new String(' ', 40), Log.Type.NetworkEvent);
+ this.Log.LogText(" | ", Log.Type.NetworkEvent);
+ if (ipsNew.Count > i)
+ this.Log.LogText(ipsNew[i].Address.ToString(), Log.Type.NetworkEvent);
+ this.Log.Line(Log.Type.NetworkEvent);
+ }
+ }
+
+ private void networkEvents_NetworkInterfaceRemoved(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Interface removed: " + e.Value.Name + "(" + e.Value.Id + ")", Log.Type.NetworkEvent);
+ }
+
+ private void networkEvents_NetworkInterfaceAdded(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Interface added: " + e.Value.Name + "(" + e.Value.Id + ")", Log.Type.NetworkEvent);
+ }
+
+ private void networkEvents_NetworkAvailabilityChanged(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("Network available: " + e.Value, Log.Type.NetworkEvent);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Trigger/Tasks/Plugins/Logs/LogPowerEvents.cs b/Trigger/Tasks/Plugins/Logs/LogPowerEvents.cs
new file mode 100644
index 0000000..4c55dad
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogPowerEvents.cs
@@ -0,0 +1,115 @@
+using System;
+using System.Drawing;
+using Microsoft.Win32;
+using System.Windows.Forms;
+using Trigger.Classes.Power;
+
+namespace Trigger.Tasks
+{
+ ///
+ /// Logs all events from
+ ///
+ class LogPowerEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ if (!Main.EventMgr.PluginExists())
+ {
+ this.Log.LogLine("Task \"LogPowerEvents\" is missing EventPlugin \"Power\"!", Log.Type.Error);
+ return false;
+ }
+
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ swInit.Stop();
+ Events.Power pwrEvents = Main.EventMgr.GetPlugin(new object[] {Main}, true);
+ swInit.Start();
+
+ pwrEvents.PowerModeChanged += new Events.EventPlugin.EventValue(pwrEvents_PowerModeChanged);
+ pwrEvents.Suspend += new Events.EventPlugin.Event(pwrEvents_Suspend);
+ pwrEvents.Resume += new Events.EventPlugin.Event(pwrEvents_Resume);
+ pwrEvents.PowerLineStatusChanged += new Events.EventPlugin.EventValues(pwrEvents_PowerLineStatusChanged);
+ pwrEvents.BatteryAvailabilityChanged += new Events.EventPlugin.EventValue(pwrEvents_BatteryAvailabilityChanged);
+ pwrEvents.BatteryStatusChanged += new Events.EventPlugin.EventValues(pwrEvents_BatteryStatusChanged);
+
+ pwrEvents.PowerSchemeChanged += new Events.EventPlugin.EventValues(pwrEvents_PowerSchemeChanged);
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Events.Power pwrEvents = Main.EventMgr.GetPlugin(new object[] {Main}, true);
+ pwrEvents.PowerModeChanged -= new Events.EventPlugin.EventValue(pwrEvents_PowerModeChanged);
+ pwrEvents.Suspend -= new Events.EventPlugin.Event(pwrEvents_Suspend);
+ pwrEvents.Resume -= new Events.EventPlugin.Event(pwrEvents_Resume);
+ pwrEvents.PowerLineStatusChanged -= new Events.EventPlugin.EventValues(pwrEvents_PowerLineStatusChanged);
+ pwrEvents.BatteryAvailabilityChanged -= new Events.EventPlugin.EventValue(pwrEvents_BatteryAvailabilityChanged);
+ pwrEvents.BatteryStatusChanged -= new Events.EventPlugin.EventValues(pwrEvents_BatteryStatusChanged);
+
+ pwrEvents.PowerSchemeChanged -= new Events.EventPlugin.EventValues(pwrEvents_PowerSchemeChanged);
+ }
+ #endregion
+
+
+ #region Event handlers
+ private void pwrEvents_PowerModeChanged(object sender, Events.EventArgsValue e)
+ {
+ if (e.Value == PowerModes.StatusChange)
+ this.Log.LogLineDate("The PowerMode changed to: " + e.Value.ToString(), Log.Type.PowerEvent);
+ }
+
+ private void pwrEvents_Suspend(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("The system is being suspended", Log.Type.PowerEvent);
+ }
+
+ private void pwrEvents_Resume(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("The system is being resumed", Log.Type.PowerEvent);
+ }
+
+ private void pwrEvents_PowerLineStatusChanged(object sender, Events.EventArgsValues e)
+ {
+ if (e.NewValue == PowerLineStatus.Online)
+ this.Log.LogLineDate("The computer was connected to the power network", Trigger.Log.Type.PowerEvent);
+ else
+ this.Log.LogLineDate("The computer was disconnected from the power network", Trigger.Log.Type.PowerEvent);
+ }
+
+ private void pwrEvents_BatteryAvailabilityChanged(object sender, Events.EventArgsValue e)
+ {
+ if (e.Value.Value == true)
+ this.Log.LogLineDate("A battery was connected", Trigger.Log.Type.PowerEvent);
+ else
+ this.Log.LogLineDate("A battery was disconnected", Trigger.Log.Type.PowerEvent);
+ }
+
+ private void pwrEvents_BatteryStatusChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The status of the battery changed: " + e.OldValue.ToString() + " -> " + e.NewValue.ToString() + " (" + Status.Power.BatteryLifePercent.ToString() + "%)", Trigger.Log.Type.PowerEvent);
+ }
+
+
+
+
+
+
+
+ private void pwrEvents_PowerSchemeChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("Power scheme changed: " + e.OldValue.Name + " --> " + e.NewValue.Name, Trigger.Log.Type.PowerEvent);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Trigger/Tasks/Plugins/Logs/LogProcessesEvents.cs b/Trigger/Tasks/Plugins/Logs/LogProcessesEvents.cs
new file mode 100644
index 0000000..a2f7e0a
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogProcessesEvents.cs
@@ -0,0 +1,65 @@
+using System.Diagnostics;
+using Trigger.Events;
+
+namespace Trigger.Tasks
+{
+ ///
+ /// Logs all events from
+ ///
+ // TODO: There is bug in here: Eine nicht behandelte Ausnahme des Typs "System.Runtime.InteropServices.InvalidComObjectException" ist in System.Management.dll aufgetreten. Ein COM-Objekt, das vom zugrunde liegenden RCW getrennt wurde, kann nicht verwendet werden.
+ class LogProcessesEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ if (!Main.EventMgr.PluginExists())
+ {
+ this.Log.LogLine("Task \"LogProcessStartedEvents\" is missing EventPlugin \"ProcessStarted\"!", Log.Type.Error);
+ return false;
+ }
+
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ swInit.Stop();
+ Events.Processes procEvents = Main.EventMgr.GetPlugin();
+ swInit.Start();
+
+ procEvents.ProcessCreated += new Events.EventPlugin.EventValue(procEvents_ProcessCreated);
+ procEvents.ProcessExited += new EventPlugin.EventValue(procEvents_ProcessExited);
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Events.Processes procEvents = Main.EventMgr.GetPlugin();
+ procEvents.ProcessCreated -= new Events.EventPlugin.EventValue(procEvents_ProcessCreated);
+ procEvents.ProcessExited -= new EventPlugin.EventValue(procEvents_ProcessExited);
+ }
+ #endregion
+
+ #region Event handlers
+ private void procEvents_ProcessCreated(object sender, EventArgsValue e)
+ {
+ try { this.Log.LogLineDate("A new process was created: " + e.Value.ProcessName + " (" + e.Value.Id + ")", Trigger.Log.Type.ProcessesEvent); }
+ catch { this.Log.LogLineDate("A new process was created", Trigger.Log.Type.ProcessesEvent); };
+ }
+
+ private void procEvents_ProcessExited(object sender, EventArgsValue e)
+ {
+ string exitCode = "";
+ try { exitCode = " Code " + e.Value.ExitCode.ToString(); } catch { }
+ this.Log.LogLineDate("A process has exited: " + e.Value.ProcessName + " (" + e.Value.Id + ")" + exitCode, Trigger.Log.Type.ProcessesEvent);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Trigger/Tasks/Plugins/Logs/LogScreenEvents.cs b/Trigger/Tasks/Plugins/Logs/LogScreenEvents.cs
new file mode 100644
index 0000000..7e08338
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogScreenEvents.cs
@@ -0,0 +1,106 @@
+using System;
+using System.Drawing;
+using Microsoft.Win32;
+using System.Windows.Forms;
+using Trigger.Classes.Screen;
+
+namespace Trigger.Tasks
+{
+ ///
+ /// Logs all events from
+ ///
+ class LogScreenEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ if (!Main.EventMgr.PluginExists())
+ {
+ this.Log.LogLine("Task \"LogScreenEvents\" is missing EventPlugin \"Screen\"!", Log.Type.Error);
+ return false;
+ }
+
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ swInit.Stop();
+ Events.Screen screenEvents = Main.EventMgr.GetPlugin();
+ swInit.Start();
+
+ screenEvents.ScreenAdded += new Events.EventPlugin.EventValue(screenEvents_ScreenAdded);
+ screenEvents.ScreenRemoved += new Events.EventPlugin.EventValue(screenEvents_ScreenRemoved);
+ screenEvents.ScreenColorDepthChanged += new Events.EventPlugin.EventValues(screenEvents_ScreenColorDepthChanged);
+ screenEvents.ScreenResolutionChanged += new Events.EventPlugin.EventValues(screenEvents_ScreenResolutionChanged);
+ screenEvents.PrimaryScreenChanged += new Events.EventPlugin.EventValues(screenEvents_PrimaryScreenChanged);
+ screenEvents.ScreenLocationChanged += new Events.EventPlugin.EventValues(screenEvents_ScreenLocationChanged);
+ screenEvents.ScreenOrientationChanged += new Events.EventPlugin.EventValues(screenEvents_ScreenOrientationChanged);
+ screenEvents.ScreenRefreshRateChanged += new Events.EventPlugin.EventValues(screenEvents_ScreenRefreshRateChanged);
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Events.Screen screenEvents = Main.EventMgr.GetPlugin();
+ screenEvents.ScreenAdded -= new Events.EventPlugin.EventValue(screenEvents_ScreenAdded);
+ screenEvents.ScreenRemoved -= new Events.EventPlugin.EventValue(screenEvents_ScreenRemoved);
+ screenEvents.ScreenColorDepthChanged -= new Events.EventPlugin.EventValues(screenEvents_ScreenColorDepthChanged);
+ screenEvents.ScreenResolutionChanged -= new Events.EventPlugin.EventValues(screenEvents_ScreenResolutionChanged);
+ screenEvents.PrimaryScreenChanged -= new Events.EventPlugin.EventValues(screenEvents_PrimaryScreenChanged);
+ screenEvents.ScreenLocationChanged -= new Events.EventPlugin.EventValues(screenEvents_ScreenLocationChanged);
+ screenEvents.ScreenOrientationChanged -= new Events.EventPlugin.EventValues(screenEvents_ScreenOrientationChanged);
+ screenEvents.ScreenRefreshRateChanged -= new Events.EventPlugin.EventValues(screenEvents_ScreenRefreshRateChanged);
+ }
+ #endregion
+
+ #region Event handlers
+ void screenEvents_ScreenAdded(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("The screen \"" + e.Value.Name + "\" was added (" + e.Value.Bounds.Width + "x" + e.Value.Bounds.Height + " " + e.Value.BitsPerPixel + "bit)", Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_ScreenRemoved(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("The screen \"" + e.Value.Name + "\" was removed", Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_ScreenColorDepthChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The screen color depth of \"" + e.NewValue.Name + "\" has changed: " + e.OldValue.BitsPerPixel + "bit -> " + e.NewValue.BitsPerPixel + "bit", Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_ScreenResolutionChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The resolution of \"" + e.NewValue.Name + "\" has changed: " + e.OldValue.Bounds.Width + "x" + e.OldValue.Bounds.Height + " -> " + e.NewValue.Bounds.Width + "x" + e.NewValue.Bounds.Height, Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_PrimaryScreenChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The primary screen is not \"" + e.OldValue.Name + "\" anymore but now \"" + e.NewValue.Name + "\"", Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_ScreenLocationChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The Location of \"" + e.NewValue.Name + "\" has changed: " + e.OldValue.Bounds.X + "|" + e.OldValue.Bounds.Y + " -> " + e.NewValue.Bounds.X + "|" + e.NewValue.Bounds.Y, Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_ScreenOrientationChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The orientation of \"" + e.NewValue.Name + "\" has changed: " + e.OldValue.Orientation + " -> " + e.NewValue.Orientation, Log.Type.ScreenEvent);
+ }
+
+ void screenEvents_ScreenRefreshRateChanged(object sender, Events.EventArgsValues e)
+ {
+ this.Log.LogLineDate("The refresh rate of \"" + e.NewValue.Name + "\" has changed: " + e.OldValue.Frequency + "Hz -> " + e.NewValue.Frequency + "Hz", Log.Type.ScreenEvent);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Trigger/Tasks/Plugins/Logs/LogSystemEvents.cs b/Trigger/Tasks/Plugins/Logs/LogSystemEvents.cs
new file mode 100644
index 0000000..36e8e80
--- /dev/null
+++ b/Trigger/Tasks/Plugins/Logs/LogSystemEvents.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Drawing;
+using Microsoft.Win32;
+using System.Windows.Forms;
+
+namespace Trigger.Tasks
+{
+ ///
+ /// Logs all events from
+ ///
+ class LogSystemEvents : TaskPlugin
+ {
+ #region Properties
+ internal Main Main;
+ internal Log Log;
+ #endregion
+
+ #region Methods
+ public override bool Init(Main Main)
+ {
+ return Init(Main, new System.Diagnostics.Stopwatch());
+ }
+ public override bool Init(Main Main, System.Diagnostics.Stopwatch swInit)
+ {
+ if (!Main.EventMgr.PluginExists())
+ {
+ this.Log.LogLine("Task \"LogSystemEvents\" is missing EventPlugin \"System\"!", Log.Type.Error);
+ return false;
+ }
+
+ this.Main = Main;
+ this.Log = Main.Log;
+
+ swInit.Stop();
+ Events.System sysEvents = Main.EventMgr.GetPlugin();
+ swInit.Start();
+
+ sysEvents.InstalledFontsChanged += new Events.EventPlugin.Event(sysEvents_InstalledFontsChanged);
+ sysEvents.FontAdded += new Events.EventPlugin.EventValue(sysEvents_FontAdded);
+ sysEvents.FontRemoved += new Events.EventPlugin.EventValue(sysEvents_FontRemoved);
+
+ sysEvents.Logoff += new Events.EventPlugin.Event(sysEvents_Logoff);
+ sysEvents.Shutdown += new Events.EventPlugin.Event(sysEvents_Shutdown);
+
+ sysEvents.ConsoleConnect += new Events.EventPlugin.Event(sysEvents_ConsoleConnect);
+ sysEvents.ConsoleDisconnect += new Events.EventPlugin.Event(sysEvents_ConsoleDisconnect);
+ sysEvents.RemoteConnect += new Events.EventPlugin.Event(sysEvents_RemoteConnect);
+ sysEvents.RemoteDisconnect += new Events.EventPlugin.Event(sysEvents_RemoteDisconnect);
+ sysEvents.SessionLock += new Events.EventPlugin.Event(sysEvents_SessionLock);
+ sysEvents.SessionLogoff += new Events.EventPlugin.Event(sysEvents_SessionLogoff);
+ sysEvents.SessionLogon += new Events.EventPlugin.Event(sysEvents_SessionLogon);
+ sysEvents.SessionRemoteControl += new Events.EventPlugin.Event(sysEvents_SessionRemoteControl);
+ sysEvents.SessionUnlock += new Events.EventPlugin.Event(sysEvents_SessionUnlock);
+
+ return true;
+ }
+
+ public override void Dispose()
+ {
+ Events.System sysEvents = Main.EventMgr.GetPlugin();
+
+ sysEvents.InstalledFontsChanged -= new Events.EventPlugin.Event(sysEvents_InstalledFontsChanged);
+ sysEvents.FontAdded -= new Events.EventPlugin.EventValue(sysEvents_FontAdded);
+ sysEvents.FontRemoved -= new Events.EventPlugin.EventValue(sysEvents_FontRemoved);
+
+ sysEvents.Logoff -= new Events.EventPlugin.Event(sysEvents_Logoff);
+ sysEvents.Shutdown -= new Events.EventPlugin.Event(sysEvents_Shutdown);
+
+ sysEvents.ConsoleConnect -= new Events.EventPlugin.Event(sysEvents_ConsoleConnect);
+ sysEvents.ConsoleDisconnect -= new Events.EventPlugin.Event(sysEvents_ConsoleDisconnect);
+ sysEvents.RemoteConnect -= new Events.EventPlugin.Event(sysEvents_RemoteConnect);
+ sysEvents.RemoteDisconnect -= new Events.EventPlugin.Event(sysEvents_RemoteDisconnect);
+ sysEvents.SessionLock -= new Events.EventPlugin.Event(sysEvents_SessionLock);
+ sysEvents.SessionLogoff -= new Events.EventPlugin.Event(sysEvents_SessionLogoff);
+ sysEvents.SessionLogon -= new Events.EventPlugin.Event(sysEvents_SessionLogon);
+ sysEvents.SessionRemoteControl -= new Events.EventPlugin.Event(sysEvents_SessionRemoteControl);
+ sysEvents.SessionUnlock -= new Events.EventPlugin.Event(sysEvents_SessionUnlock);
+ }
+ #endregion
+
+ #region Event handlers
+ void sysEvents_InstalledFontsChanged(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("Tthe user added (a) font(s) to or removes (a) font(s) from the system", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_FontAdded(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("The Font \"" + e.Value.Name + "\" was installed", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_FontRemoved(object sender, Events.EventArgsValue e)
+ {
+ this.Log.LogLineDate("The Font \"" + e.Value.Name + "\" was removed", Log.Type.SystemEvent);
+ }
+
+
+
+
+ void sysEvents_Logoff(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("The user is trying to log off", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_Shutdown(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("The user is trying to shutdown the system", Log.Type.SystemEvent);
+ }
+
+
+
+
+
+ void sysEvents_ConsoleConnect(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has been connected from the console", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_ConsoleDisconnect(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has been disconnected from the console", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_RemoteConnect(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has been connected from a remote connection", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_RemoteDisconnect(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has been disconnected from a remote connection", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_SessionLock(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has been locked", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_SessionLogoff(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A user has logged off from a session", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_SessionLogon(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A user has logged on to a session", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_SessionRemoteControl(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has changed its status to or from remote controlled mode", Log.Type.SystemEvent);
+ }
+
+ void sysEvents_SessionUnlock(object sender, EventArgs e)
+ {
+ this.Log.LogLineDate("A session has been unlocked", Log.Type.SystemEvent);
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/Trigger/Tasks/Plugins/OnHibernate.cs b/Trigger/Tasks/Plugins/OnHibernate.cs
index 8832c8a..04f1ab4 100644
--- a/Trigger/Tasks/Plugins/OnHibernate.cs
+++ b/Trigger/Tasks/Plugins/OnHibernate.cs
@@ -9,11 +9,11 @@ namespace Trigger.Tasks.Plugins
class OnHibernate : TaskPlugin
{
#region Properties
- internal const string PathKeePass = @"P:\Program Files (x86)\KeePass\KeePass.exe";
- internal const string PathThunderbird = @"P:\Programme\Mozilla Thunderbird\thunderbird.exe";
- internal const string PathFirefox = @"P:\Program Files (x86)\Mozilla Firefox\firefox.exe";
- internal const string PathTrueCrypt = @"P:\Programme\TrueCrypt\TrueCrypt.exe";
- internal const string PathTrueCryptContainer = @"Z:\Sonstiges\proxy.pac";
+ internal const string PathKeePass = @"C:\Program Files (x86)\KeePass 2\KeePass.exe";
+ internal const string PathThunderbird = @"C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe";
+ internal const string PathFirefox = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
+ internal const string PathTrueCrypt = @"C:\Program Files\TrueCrypt\TrueCrypt.exe";
+ //internal const string PathTrueCryptContainer = @"Z:\Sonstiges\proxy.pac";
internal Main Main;
internal Log Log;
@@ -92,8 +92,9 @@ namespace Trigger.Tasks.Plugins
}
- Process.Start(PathTrueCrypt, "/d /f /s /q"); // force dismount
- this.Log.LogLineDate("--> TrueCrypt volumes dismounted", Trigger.Log.Type.Action);
+ Process tc = Process.Start(PathTrueCrypt, "/d /f /s /q"); // force dismount
+ tc.WaitForExit();
+ this.Log.LogLineDate("--> TrueCrypt volumes dismounted: " + tc.ExitCode, Trigger.Log.Type.Action);
}
private void sysEvent_Resume(object sender, EventArgs e)