Czy istnieje sposób na uzyskanie czasu bezczynności maszyny, tak jak w czasie, w którym urządzenie nie było używane, w minutach/godzinach przy użyciu funkcji Powershell lub pliku wsadowego?Uzyskaj czas przestoju maszyny
Odpowiedz
Oto rozwiązanie PowerShell, które wykorzystuje interfejs API Win32 GetLastInputInfo.
Add-Type @'
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace PInvoke.Win32 {
public static class UserInput {
[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 {
DateTime bootTime = DateTime.UtcNow.AddMilliseconds(-Environment.TickCount);
DateTime lastInput = bootTime.AddMilliseconds(LastInputTicks);
return lastInput;
}
}
public static TimeSpan IdleTime {
get {
return DateTime.UtcNow.Subtract(LastInput);
}
}
public static int LastInputTicks {
get {
LASTINPUTINFO lii = new LASTINPUTINFO();
lii.cbSize = (uint)Marshal.SizeOf(typeof(LASTINPUTINFO));
GetLastInputInfo(ref lii);
return lii.dwTime;
}
}
}
}
'@
i wykorzystanie przykład:
for ($i = 0; $i -lt 10; $i++) {
Write-Host ("Last input " + [PInvoke.Win32.UserInput]::LastInput)
Write-Host ("Idle for " + [PInvoke.Win32.UserInput]::IdleTime)
Start-Sleep -Seconds (Get-Random -Minimum 1 -Maximum 5)
}
Wielkie dzięki! Dokładnie to, czego szukam. Jak mogę sformatować dane wyjściowe, aby były bardziej czytelne - tj. 4 godziny, 15 minut, 21 sekund? Dzięki jeszcze raz! – StrattonL
Użyj [formatowania daty] (http://technet.microsoft.com/en-us/library/ee692801.aspx) –
Zaktualizowałem przykład, aby pokazać więcej jego możliwości. –
$Last = [PInvoke.Win32.UserInput]::LastInput
$Idle = [PInvoke.Win32.UserInput]::IdleTime
$LastStr = $Last.ToLocalTime().ToString("MM/dd/yyyy hh:mm tt")
Write-Host ("Last user keyboard/mouse input: " + $LastStr)
Write-Host ("Idle for " + $Idle.Days + " days, " + $Idle.Hours + " hours, " + $Idle.Minutes + " minutes, " + $Idle.Seconds + " seconds.")
Spróbuj tego - choć działa zdalnie może być uruchomiony na innej sesji, a więc inny czas bezczynności?
- 1. Ustaw czas maszyny C#
- 2. Uzyskaj czas kompilacji JAR
- 3. Uzyskaj czas lokalnyZoneInfo
- 4. symfony2 - Uzyskaj czas wykonania
- 5. Uzyskaj czas działania aplikacji
- 6. Uzyskaj czas od ciągu daty
- 7. Uzyskaj czas wykonywania zapytania PostgreSQL
- 8. Uzyskaj aktualny czas systemowy w milisekundach
- 9. Uzyskaj czas od zmiennej DateTime w Ruby
- 10. Uzyskaj ostatni czas trwania połączenia w Androidzie
- 11. Swift - Uzyskaj lokalny czas na datę
- 12. Programowo uzyskaj czas operatora sieci (Android)
- 13. Uzyskaj czas w milisekundach, używając C#
- 14. iPhone: uzyskaj czas trwania pliku audio
- 15. Uzyskaj czas trwania filmu po przesłaniu
- 16. Get zakresy dat z wyłączeniem czasy przestoju
- 17. Jak rozwiązać problem przestoju dostawców OpenID?
- 18. Maszyny wirtualne
- 19. Jak obliczyć czas trwania?
- 20. moment.js czas zmiany gmt
- 21. Uzyskaj czas trwania z adresu URL na youtube
- 22. Uzyskaj czas wykonania bloku kodu w Pythonie 2.7
- 23. Uzyskaj aktualny czas w sekundach w module jądra
- 24. Uzyskaj ostatni czas DDL dla tabeli Oracle w innym schemacie
- 25. Uzyskaj czas w milisekundach bez instalowania dodatkowego pakietu?
- 26. Uzyskaj datę i czas instalacji pakietów zainstalowanych za pośrednictwem pip
- 27. Uzyskaj czas odtwarzania wideo odtwarzanego w trybie wideo?
- 28. Uzyskaj pozostały czas pracy na baterii z telefonu z Androidem
- 29. Uzyskaj aktualny czas, w tym sekundy z Sys.Date() w R
- 30. Uzyskaj czas utworzenia pliku w Pythonie na komputerze Mac
Zdefiniuj "nie był używany". Od kiedy został wylogowany? Jak długo włączony był wygaszacz ekranu? Co dokładnie? –
Nie mogę zrobić niczego dobrze na tej stronie ... Tak się składa, że poniższa odpowiedź była dokładnie tym, czego szukałem - czasem bezczynności od momentu, w którym użytkownik przestał poruszać myszą lub naciskał przyciski na klawiaturze. – StrattonL
Nie wiem, dlaczego ktoś cię głosował, być może pytanie było trochę niejasne lub nie pokazuje, czy próbowałeś czegoś ... Pamiętaj, aby sprawdzić [jak zapytać] (http://stackoverflow.com/ pytania/how-to-ask) –