Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Simulazione tastiera, Help!!!

46 views
Skip to first unread message

Andrea Fabbri

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
Devo far apparire la finestra di "Trova" di un'applicazione con CTRL+F.

Sto disperatamente cercando di capire come si fa ad inviare una sequenza di
tasti
ad una applicazione NON attiva di cui conosco l'Handle, utilizzando le API
(PostMessage, SendMessage ecc..),

Se devo simulare un tasto normale l'istruzione "PostMessage hWnd,
WM_KEYDOWN, 0&, 0&"
funziona benissimo.

Se invece devo simulare la pressione simultanea di "CTRL" + "F" e' un
casino!

Come trovo il codice di "CTRL" e come lo appiccico a "F"??????

Mi fareste un'esempio, per favore?

Vi prego e' una vita che ci sono dietro, GGGRRAAAZZZIIIEEE!!!!!

Paperino

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
"Andrea Fabbri" <andrea...@libero.it> ha scritto nel messaggio

> Se devo simulare un tasto normale l'istruzione "PostMessage hWnd,
> WM_KEYDOWN, 0&, 0&"
> funziona benissimo.
> Se invece devo simulare la pressione simultanea di "CTRL" + "F" e' un
> casino!

Per il fatto dell'applicazione non attiva, non so, ma puoi provare con l'API keybd_event.


'API keybd_event.
______________________
' Inserire nella sezione Dichiarazioni di un Form
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_CONTROL = &H11
Private Const VK_DELETE = &H2E
Private Const VK_MENU = &H12
Private Const VK_ESCAPE = &H1B
Private Const VK_SHIFT = &H10
Private Const VK_OEM_PLUS = &HBB
Private Const VK_MULTIPLY = &H6A ' asterisco del tastierino numerico
Private Const VK_F1 = &H70 ' <---- [F1]
Private Const VK_F2 = &H71 ' <---- [F2]
Private Const VK_F3 = &H72 ' <---- [F3]
' ecc...
______________________

Trovi gli altri keycodes qui:
http://msdn.microsoft.com/library/psdk/winui/vkeys_529f.htm

Esempi di chiamata:
______________________
'Simulare la pressione del tasto asterisco
keybd_event VK_MULTIPLY, 0, 0, 0 ' simula la pressione del tasto *
keybd_event VK_MULTIPLY, 0, KEYEVENTF_KEYUP, 0 ' tasto * rilasciato

'Esempio per il tasto asterisco della tastiera normale
______________________
keybd_event VK_SHIFT, 0, 0, 0 ' simula la pressione del tasto SHIFT
keybd_event VK_OEM_PLUS, 0, 0, 0 ' simula la pressione del tasto +
keybd_event VK_SHIFT, 0, KEYEVENTF_KEYUP, 0 ' tasto + rilasciato
keybd_event VK_OEM_PLUS, 0, KEYEVENTF_KEYUP, 0 ' tasto SHIFT rilasciato

Esempio per Control-Esc
______________________
keybd_event VK_CONTROL, 0, 0, 0 ' simula la pressione del tasto Control
keybd_event VK_ESCAPE, 0, 0, 0 ' simula la pressione del tasto ESC
keybd_event VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0 ' tasto ESC rilasciato
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0 ' tasto Del rilasciato
______________________

Spero che questo ti aiuti.

Bye, G.
--
---------------------------------------------
Le risposte alle tue domande le trovi
sul Sito Comune di questo NewsGroup:
http://www.murialdo.it/it_lang_vb
... e nell'help in linea !
---------------------------------------------
Real E-address: gaet...@hotmail.com


Andrea Fabbri

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
Grazie, mi sei stato di grande aiuto per il fatto che non conoscevo la
funzione keybd_event,
anche se proprio per il fatto che l'applicazione non e' attiva non fa per
il mio caso.

Grazie comunque moltissimo, ciao.

Avete qualche altra idea?

Paperino <non...@lo.dico> wrote in message
8fpecl$3nv0$1...@stargate1.inet.it...


> "Andrea Fabbri" <andrea...@libero.it> ha scritto nel messaggio
> > Se devo simulare un tasto normale l'istruzione "PostMessage hWnd,
> > WM_KEYDOWN, 0&, 0&"
> > funziona benissimo.
> > Se invece devo simulare la pressione simultanea di "CTRL" + "F" e' un
> > casino!
>
> Per il fatto dell'applicazione non attiva, non so, ma puoi provare con
l'API keybd_event.
>
>

> 'API keybd_event. ....


Sabba

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
Prova con:

SendKeys "^F"


---------
ciao

Sabba

Faber

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
> Sto disperatamente cercando di capire come si fa ad inviare una sequenza
di
> tasti
> ad una applicazione NON attiva di cui conosco l'Handle, utilizzando le API
> (PostMessage, SendMessage ecc..),
>
> Se devo simulare un tasto normale l'istruzione "PostMessage hWnd,
> WM_KEYDOWN, 0&, 0&"
> funziona benissimo.
>
> Se invece devo simulare la pressione simultanea di "CTRL" + "F" e' un
> casino!
>
> Come trovo il codice di "CTRL" e come lo appiccico a "F"??????

purtroppo non posso consultare MSDN per averne conferma, cmq mi pare di
ricordare che il mask dei tasti Ctrl, Shift e Alt sia passato come wParam (o
lParam...)

prova a dare un'occhiata a MSDN!

Ciao

Faber

Andrea Fabbri

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
SendKeys funziona solo per l'applicazione attiva.
SendKeys "^F" non e' corretto, la sintassi esatta e' SendKeys "^{F}".

Grazie comunque, ciao.

Sabba <super...@libero.it> wrote in message
VBXT4.28543$F46.3...@news.infostrada.it...

Andrea Fabbri

unread,
May 15, 2000, 3:00:00 AM5/15/00
to
Non faccio altro che guardare l'MSDN da un po di tempo per questo c...o di
problema ;-)

Grazie.

Faber <zann...@libero.it> wrote in message
KOXT4.28713$F46.3...@news.infostrada.it...

Gustavo Laroma

unread,
May 16, 2000, 3:00:00 AM5/16/00
to
Mi smbra di ricordara che le nuove release di WIndow (98/2000) non accettano
input da tastiera se l'applicazione non e' attiva quindi prima devi attivare
l'applicazione e poi usane SendKeys oppure keyb_event

Ciao
GL

Sabba

unread,
May 16, 2000, 3:00:00 AM5/16/00
to
Mi dispiace darti questo colpo duro e distruggere tutte le tue
convinzioni.... 8-) (scherzo)
Ma SendKeys funziona in tutti i processi tranne in quelli da console.. e poi
F non è un tasto speciale come HOME o END e quindi basta ^F
Prova questa:

Shell "calc.exe", vbNormalFocus
SendKeys "^M" 'Questo funziona
SendKeys "123456"

Comunque se vuoi usare una API a te la scelta....

------------
Ciao

Sabba

Hyperion

unread,
May 17, 2000, 3:00:00 AM5/17/00
to
> Se devo simulare un tasto normale l'istruzione "PostMessage hWnd,
> WM_KEYDOWN, 0&, 0&"
> funziona benissimo.
> Se invece devo simulare la pressione simultanea di "CTRL" + "F" e' un
> casino!
> Come trovo il codice di "CTRL" e come lo appiccico a "F"??????

Mai provato a sommare il codice di F il codice di CTRL con un semplice OR? (il
codice di CTRL al momento mi sfugge, dovrebbe essere 12 o giů di lě)

Andrea Fabbri

unread,
May 19, 2000, 3:00:00 AM5/19/00
to
Si, ma non funziona.

Per adesso ho risolto; Quello che dovevo fare con la simulazione della
tastiera, cioe' far apparire
la finestra di "trova" di un'applicazione inviandogli CTRL+F, l'ho fatto
simulando l'attivazione
del menu' corrispondente "Modifica > Trova", che funziona anche se la
finestra non e' attiva (per fortuna!).

Comunque mi interesserebbe scoprire ugualmente se c'e' un modo per spedire
tasti alle applicazione non attive,
e' un bel mistero per me!


Hyperion <no...@libero.it> wrote in message
R1zU4.40916$F46.4...@news.infostrada.it...
> > ......

0 new messages