View Full Version : VisualBasic
scorpion89
06-05-2006, 17:25
Devo realizzare una tastiera virtuale per delle persone disabili e per inviare dati alle applicazioni uso SendKeys, dopo aver attivato l'applicazione. Ma come mai la maggior parte delle volte nn arrivano le lettere????
Codice:
AppActivate(notepad)
My.Computer.Keyboard.SendKeys("a", True)
'SendKeys.Send("a")
'SendKeys.SendWait("a")
SendKeys.Flush()
Le ho provate tutte ma non sempre arrivano!
Ciao e grazie
PS visto ke ci sono vi faccio un altra domanda.
Visto ke sono molto inesperto di VB(certe volte penso sia meglio cosi...) come faccio per creare un array di bottoni?? E soprattutto come faccio per farli ingrandire se uno ingrandisce la finestra??
Thanks very much
Io il SendKeys l' ho sempre usato diversamente:
Private Sub Form_Load()
Dim ReturnValue, I
ReturnValue = Shell("notepad.exe", 1) ' Esegue il blocco note
AppActivate ReturnValue ' Attiva il blocco note
For I = 1 To 100
SendKeys I & " ", True ' Invia caratteri al blocco note
Next I
'SendKeys "%{F4}", True ' Invia ALT+F4 per uscire dal programma
End Sub
... solo per fare un esempio.
Per ridimensionare e spostare i controlli in base al resize del form, devi farlo manualmente all' interno dell' evento Resize del Form.
Per creare un array di controlli devi semplicemente disegnare il controllo nel form e impostare la sua proprietà Index a 0 (zero) ... poi da codice basta che crei i vari altri controlli usando il comando "load nomecontrollo(indice)" e poi renderlo visibile (in quanto appena caricato è invisibile).
Ecco un esempio che crea 11 pulsanti dinamicamente e li sposta e cambia il nome (crea semplicemente un pulsante con index=0, allunga il form per farli stare tutti):
Private Sub Form_Load()
Dim i
For i = 0 To 10
If i > 0 Then Load Command1(i)
Command1(i).Top = i * Command1(i).Height + 100
Command1(i).Caption = "Pulsante " & i
Command1(i).Visible = True
Next i
End Sub
Spero di esserti stato utile.
scorpion89
07-05-2006, 11:47
Per ora grazie,visto ke MOLTO probabilmente vi chiederò altre cose... :D
Cmq ho ancora dei dubbi sul SendKeys, visto ke non sempre mi invia le parole, o comunque il parametro!!!!
Come potrei fare per risolvere??? Farmi una routine tutta mia?? O è da sparassi??
Ciao e grazie
The AppActivate function changes the focus to the named application or window, but does not affect whether it is maximized or minimized
in altre parole l'applicazione viene attivata, ma se è minimizzata rimane minimizzata, è per quello che ti perdi le sendkey.
fai così:
1) trova l'handle della finestra del programma su cui vuoi scrivere e quello della textArea da riempire
2) trova i processId tuo e della finestra del programma con GetWindowThreadProcessId
3) attaccati al processo con AttachThreadInput(tuo_procId, target_procID, True)
4) porta l'applicazione in primo piano con SetForegroundWindow(target_handle)
5) setfocus sul campo da riempire: SetFocus(target_field_handle)
6) System.Windows.Forms.SendKeys.SendWait(value)
7) System.Windows.Forms.SendKeys.Flush()
8) staccati dal processo con AttachThreadInput(tuo_procId, target_procID, False)
ciao ;)
scorpion89
09-05-2006, 14:51
Grazie della spiegazione e scusate ancora del disturbo ma non riesco a tradurre i passi 1,2,3 e 8 in istruzioni assembler.
Grazie e ciao
PS nn so se è importante cmq uso VB.NET
Grazie della spiegazione e scusate ancora del disturbo ma non riesco a tradurre i passi 1,2,3 e 8 in istruzioni assembler.
Grazie e ciao
PS nn so se è importante cmq uso VB.NET
assembler per dinci? :D sono api di windows, scaricati api guide per studiarti le definizioni e gli utilizzi, ci sono anche parecchi esempi!
scorpion89
09-05-2006, 14:58
Scusate ma ho sbagliato a scrivere!!!!!!!!
Invece di assembler era VB
Ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.