En mi proyecto necesito un bloqueo de aplicación (igual que el bloqueo de Windows). Si la aplicación está inactiva durante un período de tiempo, la aplicación debe bloquearse, es decir, aparecerá la ventana de inicio de sesión de la aplicación. ¿Cómo puedo hacerlo en una aplicación WPF C#?Comprueba si una aplicación está inactiva durante un período de tiempo y la bloquea
Respuesta
Puede utilizar estas funciones
ver este código, se debe añadir un temporizador al formulario, y establecer 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();
}
}
}
Establezca un tiempo de espera de carga, y cada vez que ocurra una acción "activa" (deberá conectarlos), reinicie el temporizador de nuevo al inicio.
¿Hay alguna aplicación de muestra disponible? – Sauron
OMI la respuesta aceptada no es tan bueno como este método:
http://www.codeproject.com/Articles/30345/Application-Idle
El artículo CodeProject utiliza mensajes de Windows que hará que el componente tener en cuenta que la aplicación no ralentí, por ejemplo
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>
- 1. Comprueba si un evento dado está suscrito, durante el tiempo de ejecución, usando la reflexión
- 2. Java: Comprobando si la PC está inactiva
- 3. Android - Cómo contar el tiempo durante un largo período
- 4. ¿Cómo detectar si una aplicación GUI de Qt ha estado inactiva, dentro de la propia aplicación (Qt)?
- 5. WPF - Detecta el mouse durante un período de tiempo establecido
- 6. Comprueba si la aplicación iOS está en segundo plano
- 7. Comprueba si UIWebView está cargado
- 8. Comprueba si un BSTR está vacío
- 9. Comprueba si una constante ya está definida
- 10. Faltan clases si la aplicación se ejecuta durante mucho tiempo
- 11. ¿La mejor manera de saber si la aplicación está inactiva en cocoa mac OSX?
- 12. Mostrar una página 503 personalizada si upstream está inactiva
- 13. tabla de bloqueo de SQL para un período de tiempo
- 14. Comprueba si un valor está en una colección con LINQ
- 15. ¿Determina si una aplicación está bloqueada/ocupada?
- 16. Calcular las devoluciones durante el período de tiempo
- 17. Comprueba si un CALayer ya está agregado como una subcapa
- 18. Forzar el cierre de sesión de los usuarios si los usuarios están inactivos durante un cierto período de tiempo
- 19. Cómo esperar durante un período de tiempo después de ejecutar una función
- 20. ¿Comprueba si Mouse LButton está inactivo?
- 21. WPF Aplicación lenta al volver de inactiva
- 22. Comprueba si el intento uri está disponible
- 23. El controlador de medios Android muestra la pantalla durante un breve período de tiempo
- 24. ¿Se ejecuta una secuencia de comandos python durante un período de tiempo especificado por el usuario?
- 25. Comprueba si el atributo CoreData está vacío
- 26. ¿Comprueba si IIS está instalado o no?
- 27. VB Comprueba si int está vacío
- 28. php: comprueba si cierto elemento de una matriz está vacío
- 29. Comprueba si html 5 shim está cargado
- 30. ¿Por qué bloquea HttpWebRequest GetResponse durante tanto tiempo?
¿Sabes cómo lograr la aplicación MVC? – alice7
Esto detecta cuando el sistema como un todo está inactivo, no cuando una aplicación específica está inactiva. –