W moim projekcie potrzebuję blokady aplikacji (takiej jak blokada systemu Windows). Jeśli aplikacja jest bezczynna przez pewien czas, aplikacja powinna zostać zablokowana, np. Pojawi się okno logowania do aplikacji. Jak mogę to zrobić w aplikacji WPF C#?Sprawdź, czy aplikacja jest bezczynna przez pewien czas i zablokuj ją.
7
A
Odpowiedz
12
Można korzystać z tych funkcji
zobaczyć ten kod, należy dodać czasomierza do formularza i ustawić this.timer1.Enabled = true;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication9
{
internal struct LASTINPUTINFO
{
public uint cbSize;
public uint dwTime;
}
public partial class Form1 : Form
{
[DllImport("User32.dll")]
public static extern bool LockWorkStation();
[DllImport("User32.dll")]
private static extern bool GetLastInputInfo(ref LASTINPUTINFO Dummy);
[DllImport("Kernel32.dll")]
private static extern uint GetLastError();
public static uint GetIdleTime()
{
LASTINPUTINFO LastUserAction = new LASTINPUTINFO();
LastUserAction.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(LastUserAction);
GetLastInputInfo(ref LastUserAction);
return ((uint)Environment.TickCount - LastUserAction.dwTime);
}
public static long GetTickCount()
{
return Environment.TickCount;
}
public static long GetLastInputTime()
{
LASTINPUTINFO LastUserAction = new LASTINPUTINFO();
LastUserAction.cbSize = (uint)System.Runtime.InteropServices.Marshal.SizeOf(LastUserAction);
if (!GetLastInputInfo(ref LastUserAction))
{
throw new Exception(GetLastError().ToString());
}
return LastUserAction.dwTime;
}
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (GetIdleTime() > 10000) //10 secs, Time to wait before locking
LockWorkStation();
}
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
}
}
0
Ustaw limit czasu na obciążenie i za każdym razem, gdy wydarzy się "aktywna" akcja (musisz się do nich podłączyć), zresetuj licznik czasu z powrotem na początek.
+0
Czy są dostępne przykładowe aplikacje? – Sauron
0
IMO przyjął odpowiedź nie jest tak dobra jak ta metoda:
http://www.codeproject.com/Articles/30345/Application-Idle
Artykuł CodeProject wykorzystuje wiadomości Windows, które spowodują komponent rozważyć zastosowanie nie idle, np
public enum ActivityMessages : int
{
/// <summary>
/// Cursor moved while within the nonclient area.
/// </summary>
WM_NCMOUSEMOVE = 0x00A0,
/// <summary>
/// Mouse left button pressed while the cursor was within the nonclient area.
/// </summary>
WM_NCLBUTTONDOWN = 0x00A1,
/// <summary>
/// Mouse left button released while the cursor was within the nonclient area.
/// </summary>
WM_NCLBUTTONUP = 0x00A2,
/// <summary>
Powiązane problemy
- 1. Przez pewien czas miga czarny ekran
- 2. Delay każdej iteracji pętli przez pewien czas
- 3. Sprawdź, czy czas jest między dwa razy (czas DataType)
- 4. HTML5/JS - sprawdź, czy aplikacja jest nieaktywna
- 5. Sprawdź, czy moja aplikacja IOS jest zaktualizowana
- 6. Sprawdź, czy aplikacja jest zainstalowana w rejestrze
- 7. Espresso jak czekać przez pewien czas (1 godzina)?
- 8. Sprawdź, czy aplikacja działa - InstallJammer
- 9. Jak mogę poczekać, aż aplikacja konsoli będzie bezczynna?
- 10. Czy płatna aplikacja na Androida jest bezpłatna przez tydzień?
- 11. Uśpij i sprawdź, czy warunek jest prawdziwy.
- 12. sprawdź, czy łańcuch daty zawiera czas
- 13. Jak wykryć, czy aplikacja Qt GUI była bezczynna w samej aplikacji (Qt)?
- 14. Opóźnianie akcji przez pewien okres czasu
- 15. PHP Sprawdź, czy aktualny czas jest przed określonym czasem.
- 16. Sprawdź, czy aplikacja jest otwarta podczas zdarzenia GMM onMessage?
- 17. Sprawdź, czy aplikacja jest dostępna w Android Market
- 18. Sprawdź, czy aplikacja Twitter jest obecna na urządzeniu użytkownika.
- 19. Wyodrębnij czas z datetime i sprawdź, czy czas (nie data) mieści się w zakresie?
- 20. WPF: aplikacja Czas bezczynności
- 21. Sprawdź, czy aplikacja działa na symulatorze
- 22. Tworzenie wątku, który działa przez cały czas, gdy moja aplikacja jest uruchomiona
- 23. Przechodzenie do następnej i następnej strony, gdy strona jest bezczynna przez 3 sekundy na każdej stronie.
- 24. Dlaczego aplikacja internetowa WhatsApp wymaga połączenia telefonicznego przez cały czas?
- 25. Sprawdź, czy sesja jest ustawiona czy nie, a jeśli nie, utwórz ją?
- 26. Jak pogrupować DataFrame przez pewien okres czasu?
- 27. Jak sformatować datę i czas, aby program Excel ją zrozumiał?
- 28. WCF - czy źle jest pozostawić kanał otwarty przez długi czas?
- 29. Sprawdź, czy jest fałsz.
- 30. Sprawdź, czy przeglądarka jest zajęta
Czy wiesz, jak osiągnąć dla aplikacji MVC? – alice7
Umożliwia wykrycie, kiedy system jako całość jest bezczynny, a nie gdy określona aplikacja jest bezczynna. –