Newsgroup: it.comp.lang.visual-basic
Titolo: Pressione tasti

Salve a tutti,
mi servirebbe sapere come mandare un messaggio ad una finestra della
pressione di Alt+tasto.
In particolare devo fare questo con l'api  SendMessage e non con
sendkeys di VB!
Grazie

 sendkeys di VB!
Magari prova con la keybd_event. Qualche esempio:
______________________
' 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
Per il codice di altri tasti puoi vedere qui:
 
http://msdn.microsoft.com/library/psdk/winui/vkeys_529f.htm
Esempi di chiamata:
______________________
'Simulare la pressione del tasto asterisco del tastierino numerico
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
______________________
Esempio per ALT-Stamp
______________________
Private Sub PrintScreen()
keybd_event VK_SNAPSHOT, 1, 0, 0 ' simula la pressione del tasto Stamp
keybd_event VK_SNAPSHOT, 1, KEYEVENTF_KEYUP, 0 ' tasto Stamp rilasciato
' REMma le due righe sopra e attiva queste per avere nella clipboard
' solo la finestra attiva (anche se non è la tua, puoi attivarne un'altra
' con AppActivate)
' keybd_event VK_SNAPSHOT, 0, 0, 0 ' simula i tasti ALT + Stamp
' keybd_event VK_SNAPSHOT, 1, KEYEVENTF_KEYUP, 0 ' tasti rilasciati
DoEvents ' lascia il tempo al sistema di accorgersi
' che il contenuto degli appunti è cambiato
End Sub
______________________
Se richiami la funzione PrintScreen nel tuo programma hai la schermata
nella clipboard e la puoi incollare dove ti pare e usarla come vuoi:
Clipboard.Clear ' non è essenziale, ma non fa male
PrintScreen ' copia la schermata in memoria
Picture1.Picture = Clipboard.GetData(2) ' la incolla in una PictureBox
______________________
Altre info:Simulating Input, dalla MSDN.
http://msdn.microsoft.com/library/sdkdoc/winui/keybinpt_1ltg.htm
Bye, G.

"Paperino" <non...@lo.dico> ha scritto
ammetto che quando ho visto che rispondevi, mi sono detto:
adesso gli suggerisce di seguire il suo esempio, e di far rimbalzare un
floppy di qua e di la' fino a raggiungere lo scopo.
due floppy, nel caso di alt+tasto.
:)

 :)
LOL !
Un Paperino che ci ha messo un po' a capire l'allusione...

 
keybd_event e' ottima ma emula la pressione dei tasti solamente, a me
interessa mandare alt+tasto ad una finestra di cui conosco l'handle e
non riesco a fare cio'!!!
aiutatemi

 non riesco a fare cio'!!!
Se hai la Caption, oppure se l'hai attivata tu e quindi hai l'handle, puoi usare
l'AppActivate da VB, altrimenti credo funzioni l'API SetFocus.
Ricordo un paio di 3ad sull'argomento ma non li ho seguiti. Prova a cercare su
http://groups.google.com/advanced_group_search
 "handle" e "appactivate"
in questo NG.
Bye, G.