+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Invio dati ad un form web

  1. #1
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Buongiorno.
    Sto cercando di compilare un form presente in una pagina di un sito (v. immagine) con dei dati anagrafici da vb.net.
    Uso allo scopo la vecchia API keybd_event e riesco ad immettere correttamente i dati nelle caselle di testo e anche ad impostare correttamente i radiobutton. Non riesco invece a gestire il selettore a tendina della "Cittadinanza": inviando un carattere spazio si apre l'elenco a discesa, ma non si riesce a scorrere l'elenco inviando i codici di freccia su e gi.
    Immagino che dipenda dal fatto che le diverse parti del widget costituiscano finestre diverse e quindi abbiano un handle diverso da quello della pagina e non so come individuarlo. Ho provato con il vecchio Spy++ ma senza risultato.
    Nome:   Cattura.JPG
Visite:  57
Grandezza:  64.1 KB
    ℹ️ Leggi di pi su Brontolo ...

  2. #2
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    Con l'API keybd_event io ci ho rinunciato da tempo e faccio il tutto con WebBrowser, dove puoi interagire con la pagina in modo moooolto pi facile.
    Puoi dirmi l'URL di quella pagina che faccio delle prove ??

    Sergio

  3. #3
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Nel mio caso la pagina da compilare deve essere aperta in un qualunque browser esterno all'applicazione. In ogni caso una pagina soggetta a login e non posso darti le credenziali.
    Grazie comunque.
    ℹ️ Leggi di pi su Brontolo ...

  4. #4
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    Beh, se deve essere aperta in un qualunque browser, l'unica soluzione proprio inviare i tasti tramite l'API keybd_event, per preparati ad avere problemi, focus che viene perso, utenti che riducono ad icona il browser, che cambiano scheda, time out, eccetera, purtroppo non controllabile.

  5. #5
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Ti ringrazio, ma la mia domanda verteva specificamente su come far reagire un widget tipo combobox all'api keybd_event. Il resto sono altre questioni che non c'entrano molto.
    ℹ️ Leggi di pi su Brontolo ...

  6. #6
    Quando invii i codici di freccia, invii anche il corrispettivo KEYUP del tasto, oppure solo il KEYDOWN ?

    Se non invii anche il KEYUP, prova ad inviarlo subito dopo il KEYDOWN della freccia.

    Leggo in rete che al posto della keybd_event sarebbe meglio utilizzare la SendInput, che ti permette di "incapsulare" una sequenza di INPUT da inviare, tramite apposite STRUCTURE

    Esempio:
        Private Const KEYEVENTF_KEYUP As Integer = &H2
        Private Const INPUT_MOUSE As Integer = 0
        Private Const INPUT_KEYBOARD As Integer = 1
        Private Const INPUT_HARDWARE As Integer = 2
    
        Private Structure MOUSEINPUT
            Public dx As Integer
            Public dy As Integer
            Public mouseData As Integer
            Public dwFlags As Integer
            Public time As Integer
            Public dwExtraInfo As IntPtr
        End Structure
    
        Private Structure KEYBDINPUT
            Public wVk As Short
            Public wScan As Short
            Public dwFlags As Integer
            Public time As Integer
            Public dwExtraInfo As IntPtr
        End Structure
    
        Private Structure HARDWAREINPUT
            Public uMsg As Integer
            Public wParamL As Short
            Public wParamH As Short
        End Structure
    
        <StructLayout(LayoutKind.Explicit)>
        Private Structure INPUT
            <FieldOffset(0)>
            Public type As Integer
            <FieldOffset(4)>
            Public mi As MOUSEINPUT
            <FieldOffset(4)>
            Public ki As KEYBDINPUT
            <FieldOffset(4)>
            Public hi As HARDWAREINPUT
        End Structure
    
     Private Declare Function SendInput Lib "user32" (ByVal nInputs As Integer, ByVal pInputs() As INPUT, ByVal cbSize As Integer) As Integer
    
        Private Sub SendKey(ByVal bKey As Short)
            Dim GInput(1) As INPUT
    
            ' press the key
            GInput(0).type = INPUT_KEYBOARD
            GInput(0).ki.wVk = bKey
            GInput(0).ki.dwFlags = 0
    
            ' release the key
            GInput(1).type = INPUT_KEYBOARD
            GInput(1).ki.wVk = bKey
            GInput(1).ki.dwFlags = KEYEVENTF_KEYUP
    
            SendInput(2, GInput, Marshal.SizeOf(GetType(INPUT)))
    
        End Sub
    
    Codice estrapolato dalla seguente discussione: cannot-get-sendinput-to-work-in-vbnet

    L'esempio fornito nel Forum MSDN funziona, vedi se funziona anche nella tua applicazione con l'handle ricavato del ComboBox, lo stesso al quale invii il carattere di SPACE.
    ℹ️ Leggi di pi su Fix ...

  7. #7
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Quote Originariamente inviato da Fix Visualizza il messaggio
    Quando invii i codici di freccia, invii anche il corrispettivo KEYUP del tasto, oppure solo il KEYDOWN ?
    Invio anche il KEYUP, come per tutti i caratteri inviati anche alle textbox

    Quote Originariamente inviato da Fix Visualizza il messaggio
    Leggo in rete che al posto della keybd_event sarebbe meglio utilizzare la SendInput, che ti permette di "incapsulare" una sequenza di INPUT da inviare, tramite apposite STRUCTURE
    S, l'ho letto anch'io, ma la differenza soltanto di forma sintattica che semplifica la sequenza di invii che pu diventare piuttosto lunga.

    Quote Originariamente inviato da Fix Visualizza il messaggio
    L'esempio fornito nel Forum MSDN funziona, vedi se funziona anche nella tua applicazione con l'handle ricavato del ComboBox, lo stesso al quale invii il carattere di SPACE.
    Credo che i problema sia proprio questo. Non riesco a ricavare l'handle del componente dropdown del combobox, qualunque API restituisce zero. Inviando uno spazio (KEYDOWN + KEYUP) il combobox apre l'elenco a discesa, il quale evidentemente un'altra finestra di cui non riesco ad individuare l'handle. Ho provato un po' tutto il corredo di API sull'argomento e anche il vecchio Spy++.
    Comunque, anche cos con il combobox da impostare "a mano" un funzionamento accettabile.
    Grazie.
    ℹ️ Leggi di pi su Brontolo ...

  8. #8
    Quindi se invii SPACE (KEYDOWN+KEYUP) e subito dopo una ARROWDOWN (KEYDOWN + KEYUP) il controllo prende solo lo SPACE, giusto ?

    Con la keybd_event per, se non sbaglio, devi fare 1 chiamata per ogni stato del tasto (1 KEYDOWN + 1 KEYUP), quindi dovresti fare 4 chiamate per inviare anche l'ARROWDOWN

    Se cos non funziona, prova ad usare la SendInput incapsulando sia lo SPACE (KEYDOWN+KEYUP) che l'ARROWDOWN (KEYDOWN+KEYUP) all'interno della stessa chiamata, impostando nInputs a 4 e creando le 4 STRUCTURE con la sequenza.

    Magari funziona ... o magari no

    Se non va nemmeno cosi, Amen ed attendi il suggerimento di qualcun altro.
    ℹ️ Leggi di pi su Fix ...

  9. #9
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Quote Originariamente inviato da Fix Visualizza il messaggio
    quindi dovresti fare 4 chiamate per inviare anche l'ARROWDOWN
    S, 4 chiamate.

    Quote Originariamente inviato da Fix Visualizza il messaggio
    prova ad usare la SendInput incapsulando sia lo SPACE (KEYDOWN+KEYUP) che l'ARROWDOWN (KEYDOWN+KEYUP) all'interno della stessa chiamata, impostando nInputs a 4 e creando le 4 STRUCTURE con la sequenza.
    Prover, ma secondo me non funziona.
    ℹ️ Leggi di pi su Brontolo ...

  10. #10
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Niente da fare. Ho provato con SendInput, ma il risultati identico: l'invio di VK_DOWN non ha nessun effetto.
    Tra l'altro la selezione manuale in quel combobox pu essere fatta anche digitando la lettera "I" visto che contiene solo la voce ITALIA. Anche inviando il keycode VK_I (&H49) seguito o non seguito da VK_RETURN non accade niente.
    Grazie lo stesso. Alla prossima.
    ℹ️ Leggi di pi su Brontolo ...

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Invio dati form html
    Da underlife82 nel forum PHP
    Risposte: 0
    Ultimo Post: 16-01-2013, 22:14
  2. Invio dati a form pagina web
    Da zypp0 nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 14-01-2012, 21:25
  3. Perdita dati durante invio form
    Da Eugene nel forum PHP
    Risposte: 1
    Ultimo Post: 27-03-2008, 14:12
  4. Invio dati da form PHP a SQL
    Da rik85 nel forum PHP
    Risposte: 1
    Ultimo Post: 30-10-2007, 13:33
  5. [ASP]Invio dati attraverso Form
    Da jerry nel forum ASP 3, ASP .Net
    Risposte: 15
    Ultimo Post: 05-05-2006, 21:40