2017-04-21 5 views
0

Lors de la construction d'une implémentation de sécurité pour une entreprise, vous devez capturer toutes les touches enfoncées dans une fenêtre spécifique et les enregistrer dans un tampon pour les vider toutes les 5 minutes.Buffer dynamique pour enregistrer les touches pressées - C++

Ensuite, toutes les 7 minutes, le journal est envoyé par courrier et le fichier est supprimé. Est-ce un bon choix pour faire ça? Y a-t-il une meilleure option?

Le tampon est destiné à empêcher l'utilisation du fichier lors de son effacement. Le problème qui m'est présenté est: quel type de tampon dois-je utiliser à cette fin? Il doit être dynamique car je ne sais pas combien de touches seront pressées avant que le fichier ne soit sauvegardé.

Ou est-il possible de vider un tampon statique dans un fichier chaque fois qu'il est plein?

+1

il y a déjà des produits qui font cela. – Pavel

Répondre

1

Simple std::vector serait bon à cet effet, car il se développe automatiquement et sa stratégie de croissance serait bien gérer votre scénario. Vous pouvez également utiliser std::list, mais enregistrer le vecteur dans un fichier peut être plus facile. Pour chaque pression de touche, je stocke une structure pour stocker des informations sur l'événement keypress. Si yoy est sur Windows, il peut être judicieux de stocker simplement lParam et wParam de chaque keyboard message que vous gérez. Vous avez besoin de wParam pour stocker cette information supplémentaire qui vient avec chaque clé, comme Ctrl + Alt quand une touche a été pressée. Par exemple:

#include <windows.h> 

struct keypress 
{ 
    UINT lParam; // The character code of the key. 
    UINT wParam; // The repeat count, scan code, extended-key flag etc. 
}; 
typedef std::vector<keypress> keystore; 

Vous pouvez aussi bien utiliser la chaîne, mais ce serait plutôt pas, il est nécessaire pour les chaînes ici. Si vous avez simplement besoin d'une saisie de texte simple, vous pouvez peut-être être ok même avec quelque chose de simple comme typedef std::vector<char> keystore;

+0

Et quel type de données dois-je utiliser? J'ai besoin de sauvegarder les clés, la date et un peu de texte (log) – Manuel23

+0

vecteur est un bon choix? – Manuel23