2010-01-14 4 views
3

J'ai une tablette compatible multitoch-PC fonctionnant sous Windows 7.Active/désactive par programme l'entrée du doigt multitouch?

Cependant, lorsque vous utilisez le stylet et obtenir trop loin de l'écran, je me suis souvent frappé par mégarde avec mes doigts qui provoque des clics de souris indésirables. La solution est de naviguer vers "Panneau de configuration - Entrée stylo et doigt - Entrée doigt" et désactiver la case à cocher "Utiliser le doigt comme périphérique d'entrée" (tous les titres traduits peuvent donc être différents sur une fenêtre anglaise).

Maintenant, je me demande si je peux le faire aussi par programmation, donc je serais en mesure d'écrire une petite application de plateau pour cela.

J'ai essayé d'utiliser Process Monitor pour trouver des clés de registre, mais je n'en ai pas trouvé une qui montre vraiment le même effet que la case à cocher.

Est-ce que quelqu'un sait comment accéder à cette propriété (sans utiliser UI-Automation)?

Vive
winSharp93

Répondre

4

Cela peut se faire en manipulant le drapeau MICROSOFT_TABLETPENSERVICE_PROPERTY.

#include <tpcshrd.h> 

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { 
    const DWORD_PTR dwHwndTabletProperty = 
     TABLET_DISABLE_PRESSANDHOLD | // disables press and hold (right-click) gesture 
     TABLET_DISABLE_PENTAPFEEDBACK | // disables UI feedback on pen up (waves) 
     TABLET_DISABLE_PENBARRELFEEDBACK | // disables UI feedback on pen button down 
     TABLET_DISABLE_FLICKS; // disables pen flicks (back, forward, drag down, drag up) 
    ATOM atom = GlobalAddAtom(MICROSOFT_TABLETPENSERVICE_PROPERTY); 
    SetProp(hWnd, MICROSOFT_TABLETPENSERVICE_PROPERTY, reinterpret_cast (dwHwndTabletProperty)); 
    GlobalDeleteAtom(atom); 
} 

(je ne prends pas les crédits pour celui-ci, soure)

Le paramètre important est le hWnd que vous passez à poignée SetProp. GetDesktopWindow renvoie la poignée de la fenêtre du bureau. Définir ceci pour la fenêtre de bureau devrait le désactiver pour toutes les fenêtres sur le bureau et le bureau lui-même. Notez cependant que ce ne sera pas un changement constant (le redémarrage l'annulera).

Les valeurs possibles que vous pouvez utiliser sont

#define TABLET_DISABLE_PRESSANDHOLD  0x00000001 
#define TABLET_DISABLE_PENTAPFEEDBACK  0x00000008 
#define TABLET_DISABLE_PENBARRELFEEDBACK 0x00000010 
#define TABLET_DISABLE_TOUCHUIFORCEON  0x00000100 
#define TABLET_DISABLE_TOUCHUIFORCEOFF  0x00000200 
#define TABLET_DISABLE_TOUCHSWITCH   0x00008000 
#define TABLET_DISABLE_FLICKS    0x00010000 
#define TABLET_ENABLE_FLICKSONCONTEXT  0x00020000 
#define TABLET_ENABLE_FLICKLEARNINGMODE 0x00040000 
#define TABLET_DISABLE_SMOOTHSCROLLING  0x00080000 
#define TABLET_DISABLE_FLICKFALLBACKKEYS 0x00100000 
#define TABLET_ENABLE_MULTITOUCHDATA  0x01000000 

(http://msdn.microsoft.com/en-us/library/bb969148%28VS.85%29.aspx)

+0

Merci pour votre réponse.
Cependant, je n'ai trouvé aucune possibilité de réaliser le comportement que je veux utiliser * SetProp *. Deux problèmes: L'application à la poignée de bureau n'a montré aucun effet dans les autres fenêtres. Le deuxième problème que j'ai rencontré est encore pire: Ces drapeaux affectent ** à la fois le stylet et le doigt (toucher) ** - et ce n'est pas ce que je veux; Je veux passer entre eux. – Matthias

+0

Le deuxième problème pourrait survenir parce que j'ai inclus à la fois le stylet et le toucher dans mon exemple - il suffit d'utiliser les paramètres que vous voulez manipuler ;-) – Leo

+0

Bien - quelles valeurs n'affectent que la saisie par le doigt? Sur une seule fenêtre j'ai essayé TABLET_DISABLE_PRESSANDHOLD (facile à vérifier) ​​et TABLET_DISABLE_TOUCHSWITCH - les deux montrent des effets un stylo/stylet aussi bien que l'entrée de doigt/touch. TOUCHUIFORCEON/OFF ne semble pas influencer le comportement de la fenêtre à l'entrée tactile/stylet. – Matthias