cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009
-
3 mai 2007 à 12:35
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009
-
5 mai 2007 à 18:49
Bonsoir
j'ai un projet de 25 forms avec une feuille mdi ; la feuille de démarage n'est pas child elle comprend la saisie du mot de passe et si le mot de passe est correct,.. mdiform (avec les autres feuilles) est chargée.
je veux ajouter à mon projet ce qui suit: après une inactivité de la souris ou du clavier un certains temps ,mdiform et les autres feuilles sont déchargées et la feuille de démarage se charge , demandant le mot de passe. Remarque : si on veut utiliser les evenements mousemove et keypress de tous les controles du projet c'est trèe penible parcequ'il sont nombreux.....
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 5 mai 2007 à 18:49
Oui c'set vrai MR Renfield
If IsInputIdle ( 25000 ) Then.... sera suffisante, ce que j'ai ajouté c'est le choix de l'intervalle par l'utilisateur dans une combobox remplie comme ça: Aucun,1,2,3,4,5,....................,60.(en minutes)sur la page de démarrage
Public cont as integer
if combo1.text="Aucun" then
timer1.intervalle=0
cont=0
else
Timer1.intervall=1
cont=val(combo1.text)*60
end if
PRIVATE Sub Timer1_Timer()
If IsInputIdle(cont)=true then mnuaccc_click
End sub
Tu as besoins de 2 apis, GetKeyState pour savoir si une touche est appuyée, GetCursorPos pour avoir la position de la souris.
Un timer qui compte (Name="TimerActivite", Interval=10)
Et ce code :
Option Explicit
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub TimerActivite_Timer()
Const InactiviteTime As Long = 1000
Static InactiviteCount As Long
Static MousePos As POINTAPI
InactiviteCount = InactiviteCount + 1
Dim i As Long
For i = &H0 To &HFF
If GetKeyState(i) < 0 Then
InactiviteCount = 0
Exit For
End If
Next i
Dim CurrentMousePos As POINTAPI
Call GetCursorPos(CurrentMousePos)
If CurrentMousePos.x <> MousePos.x Or CurrentMousePos.y <> MousePos.y Then
MousePos = CurrentMousePos
InactiviteCount = 0
End If
If InactiviteCount >= InactiviteTime Then
MsgBox "inactif"
End If
End Sub,
----
(Coloration syntaxique automatique par Kenji)
__________
Kenji
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 3 mai 2007 à 13:37
Je dirais tout simplement que si le contrôle actif est toujours le même sans être modifié (ou son état pour certains) pendant plus de duree_à_définir, c'est que l'utilisateur n'est plus devant l'appli ou qu'il ne s'en sert plus, ma foi... et tout celà est hyper-facile à "constater" à l'aide d'un simple Timer.
cs_comme
Messages postés122Date d'inscriptiondimanche 19 mars 2006StatutMembreDernière intervention18 juillet 2009 4 mai 2007 à 11:24
Bonjour à tous
je suis très satisfais pour vos réponses à ma question ; j'ai trouvé le code de MR RENFIELD (d'après le lien si dessus)plus simple mais.... j'ai fais une petite modification car l'intervalle d'un timer ne peut pas dépasser 65000 c -à -dire un peu plus d'une minute, j'ai incrémenté une variable dans l'évenement timer ,et multiplié sa valeur par le nombre de minutes voulues(choisi par l'utilisateur) et à l'aide d'une condition si cette valeur est atteinte le timer declenche un autre evenement comme suit :
public cont as integer 'c'est le nombre de minutes(delai ) choisi par l'utilisateur comme suit :
Timer1.intervall=1000
PRIVATE Sub Timer1_Timer()
If IsInputIdle(1)=false then j=0
j=j+1
If j=cont*60 then
If IsInputIdle(1)=true then mnuaccc_click
End if
End if
End sub