Newsgroup: it.comp.lang.visual-basic
Titolo: Simulazione tastiera, Help!!!

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!!!!!

 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

 'API keybd_event. ....

Prova con:
SendKeys "^F"
---------
ciao
Sabba

 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

 wrote in message
VBXT4.28543$F46.3...@news.infostrada.it...


 wrote in message
KOXT4.28713$F46.3...@news.infostrada.it...


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

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

 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ě)

 > ......
