Newsgroup: it.comp.lang.visual-basic
Titolo: Inserire caratteri nel buffer di tastiera.

Salve a tutti,
come da oggetto voglio piazzare dei caratteri nel keyboard buffer,... e 
SendKeys non va bene.
Mi spiego :
ricevo dei dati attraverso altri canali, li devo manipolare, e poi devo 
piazzare del testo nella finestra di un'altra applicazione di cui NON ho il 
controllo.
Quello che ho fatto fino ad adesso : son capace, conoscendo il nome della 
finestra "target", di metterci dentro il dato che voglio, usando l'API 
SendMessage, l'unica cosa che mi manca é di mandargli poi un CR, per fargli 
accettare il dato.
Avevo pensato di utilizzare dunque il buffer della tastiera, mettendo la 
finestra in Foreground e schiaffando un asc(13) nel buffer di tastiera. 
SendKeys non serve a un cacchio.
Ho fatto parecchia ricerca con poco successo.
Qualche idea ?
Sal

 applicazione di cui NON ho il controllo.
API SendInput o Keybd_event, così a memoria. Google è tuo amico:
http://groups.google.com/groups&scoring=d&as_oq=sendinput+keybd_event&as_ugroup=it.comp.lang.visual-basic
Bye, G. 


Come ho detto ho fatto parecchia ricerca con poco successo.... Io con
la signora Google ci dormo assieme...;-))
Le API di cui parli le ho provate.
Ri-spiego la situazione :
Un'applicazione terza ha una finestra con un campo Text e un command
button.
Son capace di mettere quello che voglio nel campo Text. Posso portare
quella finestra in foreground. Mi serve solo da premere quel bottone.
Sto cercando diversi metodi, tra cui quello di premere virtualmente
Enter una volta che l'altra finestra é in foreground.
Ho trovato del codice quà e là, e ci sto sbattendo la testa per
trovare una soluzione.
Se qualcuno ha già fatto qualcosa del genere e si sente mosso da
pietà......
Grazie
Sal

pietà......
Possibile che quellla finestra NON abbia un HWND ?
prova questo 
http://www.filegone.com/6ag3
  se c'e' e non riesci con
gli strumenti classici di VB si puo fare con 2 righe di script
test script (per vedere il codice)  e test.exe per provare :
http://www.filegone.com/tyze
oppure scarichi 
http://www.hiddensoft.com/autoit3/
 e puoi provare/modificare
direttamente lo script
--
Fosco

 Possibile che quellla finestra NON abbia un HWND ?
get HWND  class text ecc :
http://www.filegone.com/phir
--
Fosco

Certo che ce l'ha. Mica ci crederesti se dicessi il contrario... ;-))
Utilizzo infatti
Private Declare Function SendMessageTimeout Lib "user32" Alias
"SendMessageTimeoutA" (ByVal hwnd As Long, ByVal Msg As Long, ByVal
wParam As Long, lParam As Any, ByVal fuFlags As Long, ByVal uTimeout As
Long, lpdwResult As Long) As Long
Per piazzarci del testo nella TextBox, e fin qui bene. Solo che poi
cercavo di utilizzare il keyboard buffer per premere Enter. Cosa che
non mi riusciva (e non mi riesce ancora).
Cosi finalmente mi son dato du' schiaffi e ho tirato fuori il metodo
che avrei dovuto usare già dall'inizio, visto che é lo stesso che uso
per inserire il testo.
Prima trovo l'handle del TextBox, e ci metto il testo :
SendMessageTimeout(lhWndTextBox, WM_SETTEXT, 0, ByVal sText, 0, 100,
lRtn)
poi cerco l'handle del CommndButton e lo clicco :
SendMessageTimeout(lhWndButton, BM_CLICK, 0, ByVal sText, 0, 100, lRtn)
Son sicuro che é stata la mezza bottiglia di rosso che mi son bevuta a
cena che mi ha spronato.
Grazie a tutti
Sal

cena che mi ha spronato.
e si .. c'avevo gia qui il mio che adoperavo per il babylon ma non l'ho postato
perche' ero sicuro leggendo che l'avevi gia provato :
      Handle = FindWindow("#32770", "Babylon")
              ' AppActivate "Babylon"
               'SendKeys "~"
        Handle = FindWindowEx(Handle, 0, "Button", "&Sì")
   Send = PostMessage(Handle, &HF5, 0, NullString)
     End Sub
comunque bene che ci sei riuscito ..
--
Fosco