WPF - Emulazione tastiera

lunedì 02 febbraio 2009 - 08.37

pigi78 Profilo | Newbie

Salve a tutti.

Ho un'applicazione che gira su dei computer provvisti di Touch-screen.
La tastiera inglobata su windows (osk) è un po' troppo piccola per essere premuta coi guanti.

Pensavo allora di creare una tastiera per conto mio (WPF). La parte di disegnazione è abbastanza semplice.
Il mio dubbio è: come posso emulare i pulsanti della tastiera?

Provo a fare un esempio per essere più chiaro.
Ho il form WPF 'A' che apre un form WPF 'B' in modo asincrono (non modale).
Il form 'B' resta sempre in primo piano (diciamo che è la mia tastiera, quindi deve rimanere sempre sopra agli altri).

L'effetto che vorrei ottenere è il seguente: Se l'utente preme un pulsante nella tastiera (quella fisica), l'input deve arrivare direttamente sul form 'A' (applicazione).
Se però l'utente preme un pulsante del form 'B', quest'ultimo deve comunicare al form 'A' il pulsante premuto emulando la tastiera (così non devo gestire il "dove sono", "cosa sto facendo",...)

Qualche idea?

Anonimo Profilo | Senior Member

Io ho realizzato una tastiera per un dispositivo touch screen nel seguente modo:
-Ho creato il mio user control, prendendo spunto da come fatto in questo tutorial:
http://www.codeproject.com/KB/miscctrl/touchscreenkeyboard.aspx, va bene anche uno fatto da te, basta che gli crei un evento che viene "tirato" ogni volta che viene premuso un tasto e che passi come parametro il tasto premuto.

-Ho creato un form contenente lo user control sopra creato e gestito l'evento di pressione di un tasto nel seguente modo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

-Successivamente ho dato al form gli stili della tastiera su schermo standard di windows, in modo che abbia quel comportamento (sempre in primo piano e possibilità di mandare i tasti premuti all'applicazione su cui è attivo il focus)

protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle = 0x08040188; cp.Style = 0x14C80000; return cp; } }

Spero di esserti stato utile
Riccardo

pigi78 Profilo | Newbie

Grazie dell'aiuto!

In questi giorni provo... Ma in pratica, per mandare il tutto nella finestra corrente basta il SendKeys?
Era questa la cosa "principale" che mi serviva capire.

Anonimo Profilo | Senior Member

>Grazie dell'aiuto!
DI niente, figurati

>Ma in pratica, per mandare il tutto nella finestra corrente basta il SendKeys?
SI esatto, il metodo SendKeys serve appunto a mandare i tasti all'applicazione attiva.
Dai un occhio alla pagina relativa al metodo:
http://msdn.microsoft.com/it-it/library/system.windows.forms.sendkeys.send(VS.80).aspx

CIao ciao
Riccardo

mikkosoft Profilo | Newbie

Non mi è chiaro come il form B capisca che deve inviare la pressione dei tasti alla form A.
Qualcuno mi può aiutare?
Grazie
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