Disattivare Tasti da Tastiera virtuale

mercoledì 01 luglio 2009 - 15.45

Leopardo Profilo | Newbie

Ciao a tutti,
Non trovando soluzione per disattivare alcuni tasti da osk.exe e dato che nell'evento KeyDown riesco ad intercettare il tasto che sto pigiando (sempre da osk la tastiera virtuale di win) mi chiedevo se riuscivo a disattivare l'evento che questo scatena.

In pratica ho fatto un programma su touch screen e per la tastiera userei quella di windows. NOn devo dare la possibilità di premere gli F, i tasti WIN, ecc ecc per questioni di sicurezza (l'utente deve rimanere sul programma E BASTA).
Sapreste aiutarmi? o se magari conoscete una tastiera virtuale decente che non abbia questi tasti..oppure ancora (a mali estremi...) la faccio io però come posso fare dato che la form mi prende il focus e quidni il carattere che mando con sendkeys.send([tasto]) non mi va dove voglio io?

Vb.Net 2008 Windows XP professional
Grazie infinite...

Jeremy Profilo | Guru

Ciao Daniele.
Premetto che non ho mai lavorato con le tastiere virtuali .... però ti posso dire che, se riesci ad intercettare l'evento KeyPress .... quello è l'evento che ti permette di annullare l'invio del tasto a Windows.

Facci sapere...
Ciao

Leopardo Profilo | Newbie

dunque..
Facendo stamattina sono inceppato un un forum dove ho trovato questo codice..
(Alcune cose le ho adattate al mio programma)

Public Const KEYEVENTF_EXTENDEDKEY As Long = &H1
Public Const KEYEVENTF_KEYUP As Long = &H2
Public Const VK_LWIN As Byte = &H5B

Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

(e nell'evento keydown)

If e.KeyCode = Keys.LWin Or e.KeyCode = Keys.RWin Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.F1 Or e.KeyCode = Keys.F2 Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.F3 Or e.KeyCode = Keys.F4 Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.F5 Or e.KeyCode = Keys.F6 Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.F7 Or e.KeyCode = Keys.F8 Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.F9 Or e.KeyCode = Keys.F10 Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.F11 Or e.KeyCode = Keys.F12 Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.Control Or e.KeyCode = Keys.Alt Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)
If e.KeyCode = Keys.Apps Then keybd_event(Keys.Zoom, 0, KEYEVENTF_EXTENDEDKEY, 0)

--- Bha sembra andare..l'unica cosa è l'oggetto webbrowser che non gestisce l'evento keydown ma il PreviewKeyDown...
Ho provato ad usare lo stesso codice ma non mi cambia niente sente ancora il tasto WIN (ad esempio)...
qualche idea? grazie ancora

Jeremy Profilo | Guru

Ciao Daniele.
Hai provato a verificare se è possibile gestire l'evento KeyPress??
Altrimenti ... non ho nessuna idea in merito ... mi spiace.

Facci spere...
Ciao

Leopardo Profilo | Newbie

ciao Jeremy,
grazie per le risposte.. Sì ho provato a vedere per l'evento keypress solo che i tasti "speciali" non lo fanno scatenare..
Riproverò ma ho proprio paura di no..
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5