2009-11-27 5 views
1

Je crée des macros de touches personnalisables pour un programme. (Ces macros sont limitées à ce programme.)Clavier de contournement, entrée de la souris et laissez-passer SendInput

J'utilise TApplicationEvents pour enregistrer les messages clés. Puis utilisez SendInput pour les lire. Mais j'ai besoin de désactiver la souris et le clavier pour ne pas interrompre la lecture.

Je ne peux pas utiliser JournalPlaybackProc et JournalRecordProc car ils sont soumis à UAC, UIPI dans Vista et Win7.

Y at-il un moyen facile de bloquer l'entrée de la souris et du clavier tout en utilisant SendInput? (Un moyen qui n'a pas besoin de privilèges accrus.)

J'ai également besoin d'une touche d'échappement qui arrête la lecture.

EDIT: TControl.Perform ne fonctionnait pas car il ignorait les raccourcis clavier. J'ai pensé à utiliser le quartet réservé (bits 25-28) dans les messages WM_KEY, mais dans la documentation de Windows il dit qu'il est réservé et ne l'utilise pas. Quelles pourraient être les conséquences.

Répondre

3

Si vous souhaitez que l'entrée artificielle soit limitée à votre propre application, je n'utiliserais pas SendInput. Si vous utilisez TApplicationEvents.OnMessage pour enregistrer des messages, j'ajouterais un 'si non (PlayingBack) puis' check OnMessage lors de la lecture d'une macro et utiliser Form1.Perform

+0

C'est une bonne idée. Mais cela a un problème - il ne couvre pas plusieurs formes. Ex. Si un bouton ouvre un nouveau formulaire, il fait quelque chose dans ce nouveau formulaire. Je pense, peut-être que c'est en quelque sorte possible d'obtenir le formulaire actif, puis de rediriger l'entrée là-bas. – Egon

+0

Je pense que j'ai trouvé la chose supplémentaire dont j'ai besoin «Screen.ActiveForm» ... (Je vais tester demain ...) – Egon

+0

ok presque, mais cela ne joue pas bien avec des raccourcis clavier ... – Egon

1

J'ai toujours utilisé la DLL d'AutoIT pour envoyer KeyStrokes comme ainsi que le blocage du clavier et de la souris.

Il y a une chose et c'est que AutoIT ne peut pas bloquer les touches Ctrl + Alt + Suppr.

Do check it out.

HTH

+0

C'est un lien très intéressant. Merci! – robsoft

Questions connexes