Nascondere finestra tastiera su video

giovedì 19 febbraio 2009 - 16.31

Leopardo Profilo | Newbie

ciao ragazzi avrei bisogno di una mano (e quando mai dite voi)

sto facendo un'applicazione che andrà su touch screen per evitare di dovermi fare/gestire la tastiera pensavo di usare la tastiera su video che c'era già in winxp.
il problema è questo..io la avvierei nel load del programma se non sbaglio andando a richiamare %SystemRoot%\system32\osk.exe (preso dal collegamento)

il problema sta nel dire "quando prendi il focus allora fammi vedere quella finestra" , "quando perdi il focus nascondi la tastiera"... sapete come si può fare una cosa così?

Grazie infinite :)

R3GM4ST3R Profilo | Junior Member

Ciao!
Io ho realizzato una cosa simile, ed ho optato per mettere un form piccolo sempre in primo piano in basso a destra, con un bottone che apre la tastiera di windows, se la tastiera di windows è già in esecuzione, la killo e la faccio ripartire, in modo che si avvi di nuovo in primo piano.
Non è un metodo molto ortodosso, ma funziona egregiamente.

Dim ps() As Process = Process.GetProcesses()
Dim p As Process
For Each p In ps
if p.ProcessName="osk.exe" then
'Non so se il processname della tastiera sia osk.exe, vado a memoria, il sorgente l'ho in ufficio, cmq il concetto c'è
p.kill()
end if
Next
shell("osk.exe")

Così non intercetti il focus sulla textbox ma lasci all'utente la possibilità di aprire la tastiera quando vuole.
(nel mio caso l'applicativo era una pagina web che gira in un browser, quindi non potevo recuperare il focus sulle textbox direttamente dal browser)

Se invece vuoi farla comparire al focus di una casella di testo di una tua applicazione, potresti intercettare il focus della textbox su cui vuoi far visualizzare la tastiera e sfrutti il codice quì sopra...
A meno che la classe process di .Net non esponga metodi per visualizzare/nascondere applicazioni che stanno girando per i fatti loro, ma non credo esistano...

(a meno di usare chiamate a librerie di sistema...)

Ciao!


Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)

Leopardo Profilo | Newbie

grazie mille provo subito!
Ti faccio sapere!
ciao

Leopardo Profilo | Newbie

funziona!
Però ecco devo chiedere ancora una cosetta..
in pratica la situazione è questa:

1 form sempre aperto con lo sfondo (serve per non far vedere il desktop quando il form dinamico si sta caricando "prima dello show")
1 form che si crea dinamicamente (sempre on top)

il fatto è che quando chiamo il tastierino la prima volta me lo visualizza sopra il form caricato dinamicamente mentre se questo form viene ricaricato, la finestra della tastiera scompare sotto e anche se la richiamo rimane lì..

Quindi come posso intercettare la finestra del tastierino e dirgli.. "vai su"?

Grazie infinite



Leopardo Profilo | Newbie

Ci sono riusciuto!
Grazie infinite a tutti

R3GM4ST3R Profilo | Junior Member

Son contento che hai risolto!

Scusa se non ho risposto, ma non ho avuto molto tempo in questi giorni.

Ciao!


Tutti sanno che una cosa è impossibile da realizzare, finché arriva uno sprovveduto che non lo sa e la inventa. (Albert Einstein)
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