3/5 (3 avis)
Vue 6 807 fois - Téléchargée 515 fois
//Exemple d'utilisation using System; using System.Windows.Forms; namespace IdleInput { public partial class Form2 : Form { public Form2() { InitializeComponent(); } private InputInfos.ClsAfIdleInfos IdleWatch = null; private void Form2_Load(object sender, EventArgs e) { //instanciation ClsAfIdleInfos IdleWatch = new InputInfos.ClsAfIdleInfos(20000, InputInfos.ClsAfIdleInfos.WatchingFrenquencyConstants.Fast); //events IdleWatch.CameBack += new InputInfos.EventHandler(IdleWatch_CameBack); IdleWatch.IdleExpired += new InputInfos.EventHandler(IdleWatch_IdleExpired); IdleWatch.IdleTick += new InputInfos.IdleTickEventHandler(IdleWatch_IdleTick); } private void IdleWatch_CameBack(object sender, EventArgs e) { Console.WriteLine("Activité détectée"); } private void IdleWatch_IdleTick(object sender, InputInfos.IdleTickEventArgs e) { Console.WriteLine(String.Format("Utilisateur sans activité depuis {0} seconde(s)", e.ElapsedTime)); } private void IdleWatch_IdleExpired(object sender, EventArgs e) { MessageBox.Show(String.Format("Fin de l'observation : {0} ms sans activité.", IdleWatch.GetIdleTimeSpan())); IdleWatch.Dispose(); Application.Exit(); } } }
12 déc. 2012 à 15:47
mon probèmes maintenant c'eest que IdleWatch_CameBack()n'est jamais appelé. Faut-il préciser une fenêtre à tester?
12 déc. 2012 à 11:07
Je suis entrain de tester mais j'ai de sproblèmes de détection d'activitée et de timer.
22 avril 2010 à 22:27
Comme j'ai passé un peu de temps à refaire l'exemple présent dans la classe pour une utilisation WPF, je la dispose ici pour ceux que ça intéresse :
using System;
using System.Threading;
using System.ComponentModel;
using System.Windows.Threading;
namespace IdleInput
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
private InputInfos.ClsAfIdleInfos IdleWatch = null;
private BackgroundWorker backgroundWorker1 = new BackgroundWorker();
#region "Thread pour Label"
private string mThreadText = string.Empty;
delegate void SetTextCallback(string text);
private void SetText(string sText)
{
if (richTextBox1.Dispatcher.CheckAccess())
{
// The calling thread owns the dispatcher, and hence the UI element
richTextBox1.AppendText(sText);
}
else
{
// Invokation required
SetTextCallback d = new SetTextCallback(SetText);
richTextBox1.Dispatcher.Invoke(d, new object[] { sText });
}
}
private void SetThreadText(string sText)
{
mThreadText = sText;
while (backgroundWorker1.IsBusy)
{
// Remplace Application.DoEvents();
Application.Current.Dispatcher.Invoke(
System.Windows.Threading.DispatcherPriority.Background,
new ThreadStart(delegate { })
);
}
backgroundWorker1.RunWorkerAsync();
}
#endregion
public Window1()
{
InitializeComponent();
//instanciation ClsAfIdleInfos
IdleWatch = new InputInfos.ClsAfIdleInfos(20000, InputInfos.ClsAfIdleInfos.WatchingFrenquencyConstants.Fast);
//events
IdleWatch.CameBack += new InputInfos.EventHandler(IdleWatch_CameBack);
IdleWatch.IdleExpired += new InputInfos.EventHandler(IdleWatch_IdleExpired);
IdleWatch.IdleTick += new InputInfos.IdleTickEventHandler(IdleWatch_IdleTick);
//backgroundWorker event
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
}
private void IdleWatch_CameBack(object sender, EventArgs e)
{
SetThreadText("Activité détectée");
}
private void IdleWatch_IdleTick(object sender, InputInfos.IdleTickEventArgs e)
{
SetThreadText(String.Format("Utilisateur sans activité depuis {0} seconde(s)", e.ElapsedTime));
}
private void IdleWatch_IdleExpired(object sender, EventArgs e)
{
MessageBox.Show(String.Format("Fin de l'observation : {0} ms sans activité.", IdleWatch.GetIdleTimeSpan()));
IdleWatch.Dispose();
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.SetText(mThreadText);
}
}
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.