Utilisateur Actif ou pas

Bonjour tlm.

Je cherche une fonction ou un control windows qui me permettre de dire si l’utilisateur est actif ou pas. Le but et de faire un mode away qui s’active automatiquement dans mon applis.

Si une telle chose n’existe pas connaisez vous un code ?

J’ai deja bricolé un petit code avec le control WM_COMMAND, seul probléme en utilisant celui si plus aucun autre controle ne fonctione( ex : clique sur un bouton).

Merci de vos reponses.

@tte

PS : En C++ tout sa :wink:

L’idée du message WM_COMMAND est bonne, en pseudo code ca donnerais :

  • switch si WM_COMMAND :
    • donc actif
  • default :
    • si actif
      • compteur à zero
    • sinon
      • incrémentation du compteur
        • si compteur == DELAY_POUR_ETRE_AWAY
          • utilisateur inactif
        • fin si
    • fin si

Mici. Mais le prob n’est pas le code à faire pour mon compteur mais plutot ke le fait ke j’entulise le message handler WM_COMMAND tout les autres son désactivé. Je vais vous denez un exemple de k’il y a dans mon code.

[cpp]
BEGIN_MSG_MAP(MainFrame)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBackground)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
MESSAGE_HANDLER(WM_SPEAKER, onSpeaker)
MESSAGE_HANDLER(FTM_SELECTED, onSelected)
MESSAGE_HANDLER(WM_DESTROY, onDestroy)
MESSAGE_HANDLER(WM_SIZE, onSize)
MESSAGE_HANDLER(WM_ENDSESSION, onEndSession)
MESSAGE_HANDLER(WM_ACTIVATEAPP, onActivateApp)
MESSAGE_HANDLER(WM_APPCOMMAND, onAppCommand)
//MESSAGE_HANDLER(WM_COMMAND, onCommand)
MESSAGE_HANDLER(IDC_REBUILD_TOOLBAR, OnCreateToolbar)
COMMAND_ID_HANDLER(ID_APP_EXIT, OnFileExit)
COMMAND_ID_HANDLER(ID_APP_ABOUT, OnAppAbout)
COMMAND_ID_HANDLER(IDC_AWAY, onAway)
COMMAND_ID_HANDLER(IDC_NET_STATS, onNetStats)
COMMAND_ID_HANDLER(IDC_TRAY_SHOW, onAppShow)
COMMAND_ID_HANDLER(ID_WINDOW_MINIMIZE_ALL, onWindowMinimizeAll)
COMMAND_ID_HANDLER(ID_WINDOW_RESTORE_ALL, onWindowRestoreAll)
COMMAND_ID_HANDLER(IDC_UPDATE, onUpdate)
COMMAND_ID_HANDLER(IDC_DISABLE_SOUNDS, onDisableSounds)
NOTIFY_CODE_HANDLER(TTN_GETDISPINFO, onGetToolTip)
CHAIN_MDI_CHILD_COMMANDS()
CHAIN_MSG_MAP(CUpdateUI)
CHAIN_MSG_MAP(CMDIFrameWindowImpl)
CHAIN_MSG_MAP(splitterBase);
END_MSG_MAP()[/cpp]

Voila alors kan j’active le message handler WM_COMMAND aucun autre message et activé.
J’ai trouvé dans la MSDN:
ALT_MSG_MAP(x)

J’ai pensé je pourait recupéré toute les commandes par mon WM_COMMAND, exécuté mon code auto Away et revoyé tout les messages vers le ALT_MSG_MAP(1) qui contiendrait en faite tout mes commandes. dans le BEGIN_MSG_MAP(MainFrame) il n’y aurait plus que WM_COMMAND.

Bon j’espére avoir été un maximum kler, mais je ne s’ai pas comment réalisé cela.

Le problème c’est que tu utilises les MFC que je déteste, peut être que le problème vient de l’utilisation de la gestion des évenements via les MFC.
Si j’ai le temps (pas ce soir), j’esayerais de voire ça :slight_smile:

il me semble que tu peux spécifier de passer ou pas le message au handler suivant method de l’objet evenement

en tout cas c comme ça en wxwidjet :stuck_out_tongue:

LRESULT MessageHandler(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

le parametre bHandled : si tu le met a TRUE c que l’evenement est completement geré sinon tu le met a FALSE peut etre que le moteur d’evenement appelle la commande suivante qui correspond a l evenement…

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_atl_message_handler.asp

Oki je teste tout de suite avec le bHandled. Si c’est sa c’était super simple mais faut le savoir :P.

Merci c’était bien sa. bien trop simple :P. On cherche compliqué defois.

Clair, utilisant le api win32, j’était partis dans une direction bien plus compliqué :smiley: