....Io guarerei le potenzialità di Sendkey....
Ringrazio gli intervenuti.
Il suggerimento di "Berserker79" è
affascinante, ma, anche leggendo i dubbi di "Ceskho" al riguardo, ho cominciato con quello che mi
sembrava a prima vista più abbordabile per me. E' stata la mia "
prima volta" con la funzione "
desktop.sendkeys", pertanto ho dovuto guardarmi le spiegazioni, fare prove, sbagliare, riprovare, bestemmiare, e tutto il resto normalmente annesso....
Ad ogni modo, ho ottenuto quello che volevo: far scrivere una semplice stringa in un altro editor di testo premendo un tasto dal mio programmino Gambas. Vi allego il brevissimo codice sperimentale ed esemplificativo e vi dico i due problemi che ho incontrato e come li ho risolti ....probabilmente
non in modo elegante, ma mi
pare di averli risolti:
' Gambas class file
PUBLIC SUB Form_Open()
SHELL "gedit" ' All'apertura del programma per comodità lancia l'editor "gedit"
' (uso "gedit" a fini sperimentali del codice)
END
PUBLIC SUB Button1_Click() ' serve a far andare il focus nell'editor "gedit"
' e quindi a tenere sempre il cursore all'interno di "Gedit"
ME.hide ' nasconde il form...
scrive() ' chiama la subroutine "scrive()"
END
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' mademoiselle la Subroutine......
PUBLIC SUB scrive() ' svolge le funzioni di scrivere in "gedit"
Desktop.SendKeys("Stringa ") ' scrive in "gedit" la stringa "con uno spazio finale",
' ...altrimenti non viene scritta :-(
Desktop.SendKeys("[BackSpace]") ' ...ma io non voglio lo spazio alla fine della stringa,
' e con questo comando lo elimino.
ME.show ' il form, che avevo precedentemente nascosto, resta tale solo per un attimo,
' perché mi deve essere subito mostrato per darmi la possibilità - qualora io lo voglia -
' di inserire un'altra volta la stringa premendo il tasto (e così via).
END
1^ questione: se metto normalmente la stringa (che dovrà essere scritta) in
Desktop.SendKeys, ...nell'editor non mi viene scritta
. Per farla scrivere devo porre uno spazio alla fine della stringa, in questo modo: "Stringa ".
La domanda è: perché ci vuole lo spazio ?
2^ questione: una volta premuto con il mouse il tasto del mio programmino, per far scrivere la stringa nell'editor avviato parallelamente, devo spostare il mouse per cliccare all'interno dell'editor. Insomma, per far comparire la scritta nell'editor devo fare in modo da attivare lì il focus del cursore. Però si capirà che questo è tutto un po' farraginoso con aggiunta di perdita di tempo: clicca qua nel programmino, spostati là nell'editor e cliccaci dentro per poter far comparire il risultato, poi torna al programmino Gambas per cliccare nuovamente sul tasto, poi torna sull'editor per vedere il risultato... insomma troppo un casino !
Io, invece, ho bisogno di una cosa semplice e veloce
ovviamente: clicco sul tasto del mio programmino Gambas e vedo apparire immediatamente la stringa prevista nel campo dell'editor; poi
senza spostare il mouse di qua e di là nello schermo del monitor clicco nuovamente sul tasto e vedo immediatamente apparire la stringa prevista nel campo dell'editor ! Questo vorrei !
Mentre riflettevo e provavo il mio programma, vedevo che, quando cliccavo nell'editor Gedit per far apparire la stringa, il programmimo Gambas
ovviamente spariva, ....m'è venuto in mente, dunque, che se avessi fatto sparire il programmino all'atto della scrittura, senza però chiuderlo, forse avrei ottenuto il focus del cursore nell'editor, e quindi la comparsa della stringa (...come se avessi cliccato con il mouse nell'editor. Insomma ho pensato che avrei dovuto riprodurre in modo
controllato il fenomeno della sparizione del mio programmino !). Ho utilizzato il comando
ME.hide, ed infatti così è stato... e senza dover spostare il mouse là in gedit e cliccarci dentro ! Ovviamente mi serviva far comparire subito il programmino per poter cliccare nuovamente sul tasto. Per fare questo ho inserito il comando
ME.show. ...a me la cosa va, forse è una soluzione rozza, ma pare che va
!
La domanda è: secondo voi c'è un metodo alternativo più elegante e preciso ?