Italian evento keyboard

micro

Well-Known Member
Licensed User
Longtime User
Salve ragazzi,
vi espongo quello che è il mio problema riprendendo forse in parte quello di un mio thread precedente sulla keyboard.
Mi sevirebbe in qualsiasi momento a prescindere dall'oggetto che in quel momento ha il focus (che sia una label, o un button, o la form ecc.) catturare il tasto premuto sulla tastiera.
In vb.net con la funzione GetAsyncKeyState della Lib "user32.dll" riesco ad ottenere tutto ciò ma con basic4ppc non ne riesco a venire a capo.
Potete aiutarmi?
Speriamo bene, sembra proprio che le mie richieste siano un pò ostiche :) ..... a guardare le risposte che ottengo.
Incrociamo le dita.

Bye
 
D

Deleted member 103

Guest
Ciao micro,

hai già provato con la Libreria Hardware.dll ?

Guarda quì: Hardware

Speriamo bene, sembra proprio che le mie richieste siano un pò ostiche ..... a guardare le risposte che ottengo.
Io penso sempre: meglio nessuna risposta che qualcuna che non serve a niente.;)

Ciao,
Filippo
 

micro

Well-Known Member
Licensed User
Longtime User
:) bhè certo filippo hai ragione, meglio silenzio che risposte non giuste.
Per la lib Hardware avevo già visto ma nulla, per la sezione key riesci solo ad emulare gli eventi della keyboard ma non a catturali.

Grazie tante filippo. :sign0188:
 
D

Deleted member 103

Guest
guarda che ti sbagli un poco.:)

Questo è un esempio dalla Online-Help

Using a HardKey object you can catch the keypress event of the hardware keys.

Example:
'Add a reference to the Hardware library and add a HardKey object named hk.
Sub Globals

End Sub

Sub App_Start
Form1.show
hk.new1("form1",true,true,true) 'Catch the five hardware keys and the cursor keys.
End Sub

sub hk_HardKeyPressed
Select hk.KeyPressed
case hk.Key1
msgbox("Key1 was pressed")
case hk.Key2
msgbox("Key2 was pressed")
case hk.Key3
msgbox("Key3 was pressed")
case hk.Key4
msgbox("Key4 was pressed")
case hk.Key5
msgbox("Key5 was pressed")
case hk.KeyLeft
msgbox("Left key was pressed")
case hk.KeyRight
msgbox("Right key was pressed")
case hk.KeyUp
msgbox("Up key was pressed")
case hk.KeyDown
msgbox("Down key was pressed")
case hk.KeyEnter
msgbox("Enter key was pressed")
End Select
end sub
così dovrebbe funzionare...;)
 

Cableguy

Expert
Licensed User
Longtime User
Hi fillipo,

For keyboard trapping try this code here on post #8...
it was used to create a borderless, caretless textbox/editable label....
 

micro

Well-Known Member
Licensed User
Longtime User
Allora filippo,
ho detto così perchè infatti nell'help dice "emulate" e anche perchè ho fatto un programmino per l'omnia della samsung per chiudere un programma simulando la pressione di alcuni tasti.
Ho provato con il tuo esempio (sul desktop) ma non viene attivata mai quella sub anche mettendo il parametro onlyActiveForm su false.
L'esempio di Cableguy è in pratica quello che faccio io (infatti è attivata solo quando la label ha il focus) ma a me serve che la sub (per catturare l'evento della keyboard) venga sempre attivata a prescindere dal controllo che abbia il focus e senza crearmi per ogni controllo almeno due oggetti, diventa troppo dispensioso.
Grazie anche a te Cableguy per il reply.

Bye
 

moster67

Expert
Licensed User
Longtime User
ciao - non ho provato ma sembra che "sendKeys" funziona con il Compact Net Framework anche se non dovrebbe. Ho trovato questa pagina (e penso sia relativo al tuo problema):

SendKeys in Compact Framework 2.0 - MSDN Forums

Penso che si deve fare una libreria per poter usarlo in Basic4PPC (o almeno per poter testare).

Probabilmente ho detto delle "st****te" ma non si sa mai:)

saluti,
moster67
 

micro

Well-Known Member
Licensed User
Longtime User
Grazie anche a te monster67,
ma più che il send a me interesserebbe il get :sign0060:
Infatti se leggi all'inizio del thread in vb.net faccio uso della GetAsyncKeyState.

Che dite posto anche nella sezione Questions & Help Needed o mi leggono anche qui?
 

moster67

Expert
Licensed User
Longtime User
Grazie anche a te monster67

moster67 p.f. - è una bella differenza !! :)

ma più che il send a me interesserebbe il get :sign0060:
Infatti se leggi all'inizio del thread in vb.net faccio uso della GetAsyncKeyState.

te lo avevo detto - ho detto una.................... :)

saluti
moster67
 

micro

Well-Known Member
Licensed User
Longtime User
ehehehe, scusami moster67 ma quella "n" in più nel tuo nick l'avevo vista davvero prima di replicare. :sign0013:
 

micro

Well-Known Member
Licensed User
Longtime User
Ciao filippo,
ritorno sull'argomento dopo un lungo silenzio.
Problemi di lavoro...
Allora, ho utilizzato la tua dll fgControls e quindi la funzione GetAsyncKeyState per catturare gli eventi della Keyboard ma stranamente con il tasto Tab (Chr(09)) l'evento non viene attivato mentre tutto ok per Shift, Ctrl, Bs e Alt.
Come mai?
E' importante per me gestire il Tab per uno spostamento ottimale tra caselle di testo.

Grazie a tutti.
 
D

Deleted member 103

Guest
Ciao micro,

ho provato die nuovo e da me funziona tutto come sie deve.

Riprova...
 

Attachments

  • fgGetAsyncKeyState.sbp
    2.3 KB · Views: 265

micro

Well-Known Member
Licensed User
Longtime User
Grazie per la tempestività filippo, disponibile come sempre.
Se leggi bene all'inizio del thread noterai che dico catturare l'evento anche quando il focus è in una textbox ecc. ecc.
Infatti se provi ad aggiungere delle textbox alla tua form d'esempio vedi che la sub getkey_KeyPressed non viene attivata se premi su Tab quando la textbox ha il focus.
;)
 
D

Deleted member 103

Guest
Cosa strana, ho provato in una "textbox" a cambiare la property TextAlignment da alCenter a alLeft e già funziona.
In questo caso non c'è bisogno del getkey_KeyPressed per catturare il Tab.
 

micro

Well-Known Member
Licensed User
Longtime User
Cosa strana, ho provato in una "textbox" a cambiare la property TextAlignment da alCenter a alLeft e già funziona.
In questo caso non c'è bisogno del getkey_KeyPressed per catturare il Tab.

.... non ho capito cosa centra il TextAlignment con il Tab :confused:
Come fai a capire da codice se premi Tab se sia la getkey_Keypressed che gli eventi stessi della TextBox non te lo permettono?
Bye
 
D

Deleted member 103

Guest
normalmente quando si preme il tasto TAB, in Focus dei controlli cambia dall'uno all'altro.
Io ho notato addesso che quando una Textbox ha property TextAlignment alCenter o alRight non funziona più, cioè il Tab viene inserito nel testo e il focus non cambia.
 

micro

Well-Known Member
Licensed User
Longtime User
:) filippo io non voglio far cambiare il focus quando clicco su TAB, ma voglio solo da codice gestire la sua pressione, quindi ripeto, catturare l'evento.

Grazie tante filippo per i tuoi reply.
 

maXim

Active Member
Licensed User
Longtime User

micro

Well-Known Member
Licensed User
Longtime User
scusami se ti rispondo dopo tanto tempo maXim ma sai, quando alcune cose le fai un pò per hobby e un pò per famigliarizzare con il software ti dedichi solo quando hai un pò di tempo libero.......e questo purtroppo inizia a scarseggiare.
Comunque sicuramente potrà tornarmi utile.

Grazie
 
Top