[VB.NET] Pressione tasto TAB nella clipboard

venerdì 21 marzo 2014 - 10.30
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Windows 7  |  Windows XP  |  Visual Studio 2008

Zixower Profilo | Newbie

Spiego cosa sto cercado di fare: nella mia form, sono presenti dei dati inseriti in diverse TextBox. Io voglio memorizzare questi dati nella clipboard, separandoli con una tabulazione. Il risultato dev'essere che se mi sposto su un'altra applicazione, tipo un form caricato in una pagina web all'interno di un browser, mi posiziono sul primo campo ed incollo il contenuto della clipboard, si devono compilare tutti i campi in automatico.

Purtroppo tutto il contenuto della cipboard viene inserito solo nel primo campo, dato che la tabulazione viene interpretata come carattere e non come passaggio al campo successivo.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Devo praticamente trovare un'alternativa al codice qui sopra, che mi permetta di far interpretare le tabulazioni come passaggio al campo successivo e non come carattere.

Qualcuno può aiutarmi?

Vi ringrazio.

ridaria Profilo | Expert

credo che ti convenga parsare il testo che hai nella clipBoard, e quando incontri il carattere di tabulazione, gli dici che il testo che segue va nella text box2 e così via se vi sono più text box alias più tabulazioni.

Per lui il carattere di tabulazione è un carattere non un evento di tastiera sulla form quando legge del testo.

Ciao

Fammi sapere


Riccardo D'Aria

Zixower Profilo | Newbie

>credo che ti convenga parsare il testo che hai nella clipBoard,
>e quando incontri il carattere di tabulazione, gli dici che il
>testo che segue va nella text box2 e così via se vi sono più
>text box alias più tabulazioni.
>
>Per lui il carattere di tabulazione è un carattere non un evento
>di tastiera sulla form quando legge del testo.

Il problema è che il programma in cui incollo i dati non è fatto da me e pertanto non posso fargli interpretare il testo.

Ad esempio, nel mio programma sono visualizzate le credenziali di accesso, per esempio, dell'account di Libero.it (textbox con nome utente e textbox con password). Queste vengono copiate nella clipboard e poi mi sposto nella finestra del browser in cui è caricata la pagina di login ed incollo i dati nel campo nome utente. L'obiettivo è quello di far compilare il campo nome utente e, grazie alla tabulazione, anche il campo password. Attualmente nome utente e password vengono incollati solo nel campo nome utente, separati da un carattere di tabulazione.

Io mi sono fissato sulla tabulazione e sulla clipboard, ma magari c'è un altro modo per risolvere il problema. Il mio obiettivo non è utilizzare questi strumenti, ma quello di riuscire a compilare in un programma esterno diversi campi in automatico.

ridaria Profilo | Expert

vuoi compilare in automatico dei campi su di un software di terzi, di cui non hai i sorgenti?

Credo che si adifficile incollare in una casella di testo e pretendere che il software da solo capisca che una parte va in una casella ed un'altra parte in un altra casella di testo.

Fammi sapere se ho capito bene
Riccardo D'Aria

Zixower Profilo | Newbie

Esatto.

Però il mio dubbio non è sul programma di destinazione, che non deve fare niente di diverso dalla sua normale funzionalità, ma se c'è il modo, attraverso gli strumenti offerti dal sistema (io avevo pensato alla clipboard appunto), di ottenere la compilazione automatica dei campi attraverso la "simulazione" della pressione del tasto TAB.

Ho dato fiducia alla clipboard, perché è in grado di "trasportare" dati diversi dal testo (o almeno mi ha dato questa impressione), come la formattazione di una casella Excel. Ora, non so se questo è possibile perché Excel gestisce la cosa attraverso l'interpretazione di tag testuali inseriti nella clipboard all'atto del "copia", oppure se veramente si possono inserire dati che vanno oltre alla tipologia testo.

ridaria Profilo | Expert

se tu incolli del testo in una casella di testo, l'operazione è solo tale: Incolla

Quello che vuoi fare tu non è fattibile in questo modo.

é il software che sta dietro alle caselle in cui incolli che deve provvedere ad incollare una parte qui ed una parte li.

Non credo che così tu possa ottenere ciò che vuoi.

Ciao


Riccardo D'Aria

Zixower Profilo | Newbie

Probabilmente non mi sono spiegato bene e devo aver creato confusione con la storia della clipboard e ti ringrazio comunque delle tue risposte.

Io non voglio necessariamente dialogare direttamente con la textbox di destinazione o qualunque oggetto su cui mi ritrovo a dialogare. Il mio scopo è compilare quei campi, ma non voglio farlo necessariamente con l'incolla.

Esco dal caso specifico: desidero sapere se esiste uno strumento in vb.net per poter simulare determinati eventi, come la pressione dei tasti, da poter richiamare anche spostandomi su un'altra applicazione.

Ho preso la clipboard come esempio perché funzionalmente rispecchia la mia necessità, ma il risultato non è quello desiderato, come abbiamo abbondantemente stabilito.

Quello che cerco di fare è di far "immagazzinare" dalla mia applicazione "pressione tasto A" "pressione tasto B" "pressione tasto TAB" "pressione tasto C" e così via (e non "scrivi carattere A" "scrivi carattere B" "scrivi carattere TAB" "scrivi carattere C", che sono il risultato degli eventi nella scrittura in una proprietà stringa), potermi spostare su un'altra applicazione e far richiamare al sistema quegli eventi. Una sorta di tastiera virtuale che preme i tasti in automatico, invece di lasciarli premere dall'utente via mouse o touchscreen.

Spero di non aver creato ancora più confusione.

ridaria Profilo | Expert

>Probabilmente non mi sono spiegato bene e devo aver creato confusione
>con la storia della clipboard e ti ringrazio comunque delle tue
>risposte.
>
>Io non voglio necessariamente dialogare direttamente con la textbox
>di destinazione o qualunque oggetto su cui mi ritrovo a dialogare.
>Il mio scopo è compilare quei campi, ma non voglio farlo necessariamente
>con l'incolla.
>
>Esco dal caso specifico: desidero sapere se esiste uno strumento
>in vb.net per poter simulare determinati eventi, come la pressione
>dei tasti, da poter richiamare anche spostandomi su un'altra
>applicazione.

Come fai su un'altra applicazione, il cui codice non lo hai scritto tu?. NON è possibile

>
>Ho preso la clipboard come esempio perché funzionalmente rispecchia
>la mia necessità, ma il risultato non è quello desiderato, come
>abbiamo abbondantemente stabilito.
>
>Quello che cerco di fare è di far "immagazzinare" dalla mia applicazione
>"pressione tasto A" "pressione tasto B" "pressione tasto TAB"
>"pressione tasto C" e così via (e non "scrivi carattere A" "scrivi
>carattere B" "scrivi carattere TAB" "scrivi carattere C", che
>sono il risultato degli eventi nella scrittura in una proprietà
>stringa), potermi spostare su un'altra applicazione e far richiamare
>al sistema quegli eventi. Una sorta di tastiera virtuale che
>preme i tasti in automatico, invece di lasciarli premere dall'utente
>via mouse o touchscreen.
No puoi far fare ad una applicazione ciò che il codice con cui è stata scritta non preveda che sia fatto.

>
Spero di essere stato chiaro.

CIAO :-)


Riccardo D'Aria

Zixower Profilo | Newbie

Ripeto: non voglio far fare niente all'applicazione esterna, ma voglio interagire con essa con la generazione di eventi dalla mia, sfruttare gli strumenti forniti dal sistema.

Ho trovato una soluzione parziale:

SendKeys.Send("%{TAB}Utente{TAB}Password")

In questo modo compila le textbox dell'applicazione esterna, ma l'unico vincolo è che devo essere sicuro che nella sequenza delle finestre aperte, quella con il form da compilare sia immediatamente successiva alla mia. Volevo trovare una soluzione che, con questa soluzione od una similare, mi permetta di posticipare l'esecuzione del SendKey a quando viene dato il focus all'applicazione con il form da compilare.

ridaria Profilo | Expert

>Ripeto: non voglio far fare niente all'applicazione esterna,
>ma voglio interagire con essa con la generazione di eventi dalla
>mia, sfruttare gli strumenti forniti dal sistema.
>
>Ho trovato una soluzione parziale:
>
>SendKeys.Send("%{TAB}Utente{TAB}Password")
>
>In questo modo compila le textbox dell'applicazione esterna,
>ma l'unico vincolo è che devo essere sicuro che nella sequenza
>delle finestre aperte, quella con il form da compilare sia immediatamente
>successiva alla mia. Volevo trovare una soluzione che, con questa
>soluzione od una similare, mi permetta di posticipare l'esecuzione
>del SendKey a quando viene dato il focus all'applicazione con
>il form da compilare.

Ok, faccio fatica a seguirti, cmq se il sendKeys fa ciò che ti occorre, allora devi solo esser certo delle sequenze delle form di cui parli.

Ciao

Riccardo D'Aria
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5