Определить простой операционной системы,на основе последнего события ввода пользователя.Для этого используем функцию GetLastInputInfo.Для создания форм,использовался Primal Forms.
$code = @' using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace Idle { public static class Timer { [DllImport("user32.dll", SetLastError=false)] private static extern bool GetLastInputInfo(ref LASTINPUTINFO plii); [StructLayout(LayoutKind.Sequential)] private struct LASTINPUTINFO { public uint cbSize; public int dwTime; } public static DateTime LastInput { get { LASTINPUTINFO lii = new LASTINPUTINFO(); lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO)); GetLastInputInfo(ref lii); DateTime bootTime = DateTime.Now.AddMilliseconds(-Environment.TickCount); DateTime lastInput = bootTime.AddMilliseconds(lii.dwTime); return lastInput; } } public static TimeSpan IdleTime { get { return DateTime.Now.Subtract(LastInput); } } } } '@ Add-Type $code Function UpdateLabel { $label3.Text = [Idle.Timer]::IdleTime $label4.Text = [Idle.Timer]::LastInput.ToString() } [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null $form1 = New-Object System.Windows.Forms.Form $label4 = New-Object System.Windows.Forms.Label $label3 = New-Object System.Windows.Forms.Label $label2 = New-Object System.Windows.Forms.Label $label1 = New-Object System.Windows.Forms.Label $timer = New-Object System.Windows.Forms.Timer $timer.Interval=1000 $timer.Start() $timer.add_Tick({Updatelabel}) $form1.Text = "Idle Timer" $form1.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedDialog $form1.ClientSize = New-Object System.Drawing.Size(249,79) $label4.Size = New-Object System.Drawing.Size(153,23) $label4.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) $label4.Location = New-Object System.Drawing.Point(77,44) $label4.Text = [Idle.Timer]::LastInput.ToString() $form1.Controls.Add($label4) $label3.Size = New-Object System.Drawing.Size(153,23) $label3.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,1,3,0) $label3.Location = New-Object System.Drawing.Point(77,17) $label3.DataBindings.DefaultDataSourceUpdateMode = 0 $label3.Text = [Idle.Timer]::IdleTime $form1.Controls.Add($label3) $label2.Size = New-Object System.Drawing.Size(81,23) $label2.Text = "Last Input:" $label2.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,0,3,0) $label2.Location = New-Object System.Drawing.Point(13,44) $form1.Controls.Add($label2) $label1.Size = New-Object System.Drawing.Size(81,19) $label1.Text = "Idle Time:" $label1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",8.25,0,3,0) $label1.Location = New-Object System.Drawing.Point(13,17) $label1.Name = "label1" $form1.Controls.Add($label1) $form1.ShowDialog()
Невероятно! Спасибо! А такое возможно сделать в VBScript?
Я не знаю Vbscript,поэтому не могу ничем помочь.