Visualizzazione dei risultati da 1 a 10 su 10

Discussione: cerca codice

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320

    cerca codice

    Ciao a tutti. Ho una domanda un pò strana da porre al forum, ma spero che qualcuno possa aiutarmi. Ho una form (è gia un eseguibile a se stante) che contine 5 text box nelle quali posso inserire 5 numeri l'una (per come intenderci la maschera di attivazione dei più comuni programmi). Ora vorrei sapere se con visul basic è possibile scrivere un programma che automaticamtente partendo da 0 inserisca i numeri nelle textbox, clicchi su Ok e se è sbagliato torni all'inizio riscrivendo nuovi numeri. Ovviamente il tutto viene fatto con un ciclo che va da 0 a n.
    Secondo voi è una cosa fattibile?? come posso interagire con questo form esterno al mio progetto??


    Spero di essere stato chiaro nella spiegazione.

    Ciao e grazie a tutti.

  2. #2
    Utente bannato
    Registrato dal
    Sep 2003
    Messaggi
    1,012
    Penso sia possibile con le API.
    Chiedi a taz ke ne sa + di me.

  3. #3
    Spero che si tratti di una cosa legale... hai presente il regolamento del forum?
    Chi non cerca trova.

  4. #4
    nessuno fino a qui ha parlato di violare copyright fare lamerate (anche se la cosa lo fa intendere) ecc ecc. se non avete nioente da rispondere non rispondete
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Fondamentalmente bisogna trovare gli handle dei cinque textbox e del pulsante OK. Una volta in possesso di questi handle è possibile inviare opportuni messaggi per caricare il testo nei textbox e simulare il click sul pulsante OK.

    Per trovare gli handle ti consiglio di usare l'utility Spy++ fornita con VisualStudio 6.0. Altrimenti bisognerebbe entrare nei meandri della programmazione Win32 utilizzando l'apposita funzione di callback EnumChildProc, da attivare con la funzione EnumChildWindows, ovviamente così facendo le cose si complicano.

    Adesso che hai gli handle, per caricare il testo nei textbox fai così:
    codice:
    'dichiarazioni in un modulo VB
    Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
    Public Const WM_SETTEXT = &HC
    Public Const BM_CLICK = &HF5
    
    'nel form
    Dim testo As String
    
    testo = "00000"
    SendMessage hwnd1, WM_SETTEXT, 0, testo
    testo = "00000"
    SendMessage hwnd2, WM_SETTEXT, 0, testo
    testo = "00000"
    SendMessage hwnd3, WM_SETTEXT, 0, testo
    testo = "00000"
    SendMessage hwnd4, WM_SETTEXT, 0, testo
    testo = "00000"
    SendMessage hwnd5, WM_SETTEXT, 0, testo
    
    'simulazione click
    SendMessage hwnkOk, BM_CLICK, 0, 0
    Chi non cerca trova.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    praticamente arabo... cmq primo ti ringrazio, secondo ci provo, non oso immaginare il casino che combino.... preparati che tra poco ti tempesto di domande...

    Grazie mille e ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    Ok ho aperto Spy++... xò è la prima volta e quindi sono gia fermo. Ho notato che a seconda dei programmi che ho aperto, mi presenta più voci.... è in queste che si trovano gli handle a cui tu ti riferivi??

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    Allora ho aperto la maschera e sotto Spy++. I campi delle textbox si presentano in questo modo:

    000C01FE "" Edit

    Il pulsante in questo modo

    001001F6 "&Continue" Button

    Come tu mi hai detto ho aperto un progetto VB, ho inserito un modulo in cui ho dichiarato la funzione.
    Poi ho aperto un form e nel form load ho inserito il resto del codice... ecco ora sono fermo come devo procedere???

    Nel senso io ho pronti i miei cicli per la progressione dei numeri, ma non avendolo mai fatto non so come utilizzarli.. nel senso

    do while i<1000
    'in questo punto dovrei far scrivere nella textbox del programma esterno
    'Qui dovrei premere il pulsante Continue
    i = i+1
    loop

    Non è che mi dai qualche info in più???

    Ciao e grazie

  9. #9
    Probabilmente ci sei già arrivato da solo ma comunque ti spiego rapidamente come devi usare Spy++:
    a) sulla barra strumenti di Spy++ premi la quinta icona, denominata "Find window" (oppure fai CTRL+F)
    b) ti appare la finestra Find Window, trascina l'icona Finder Tool sopra il controllo del quale vuoi sapere l'handle, quindi lascia il mouse
    c) premi OK sulla finestra Find Window, ti appare ora la finestra Window Properties. Cerca Window Handle, che si trova nella tab General

    Bene, quel numero è l'handle desiderato, in formato esadecimale. Segnatelo e fai la stessa operazione anche per gli altri textbox e per il pulsante. Occhio che ogni volta che chiudi e riapri la finestra con i codici, gli handle cambiano! E' ovvio quindi che non devi chiudere quella finestra, altrimenti il tuo programma VB non potrà funzionare.

    Adesso che hai tutti gli handle, li puoi inserire nel programma. Se per esempio il primo handle è 00060240, il codice in VB sarà:
    codice:
    testo = "00000"
    SendMessage &H60240, WM_SETTEXT, 0, testo
    Come vedi, gli zero iniziali sono spariti (superflui), mentre ho aggiunto al numero i caratteri &H per indicare che il numero che segue è espresso in base esadecimale.

    Presumo che la tua procedura sarà più o meno così:
    codice:
    Dim cod1 As Long
    Dim cod2 As Long
    Dim cod3 As Long
    Dim cod4 As Long
    Dim cod5 As Long
    Dim code As String
    Dim hwnd1 As Long
    Dim hwnd2 As Long
    Dim hwnd3 As Long
    Dim hwnd4 As Long
    Dim hwnd5 As Long
    
    hwnd1 = &H60240
    hwnd2 = &H60284
    hwnd3 = &H60312
    hwnd4 = &H604A8
    hwnd5 = &H60622
    
    For cod1 = 0 To 99999
       For cod2 = 0 To 99999
          For cod3 = 0 To 99999
             For cod4 = 0 To 99999
                For cod5 = 0 To 99999
                   code = Format$(cod1, "00000")
                   SendMessage hwnd1, WM_SETTEXT, 0, code
                   code = Format$(cod2, "00000")
                   SendMessage hwnd2, WM_SETTEXT, 0, code
                   code = Format$(cod3, "00000")
                   SendMessage hwnd3, WM_SETTEXT, 0, code
                   code = Format$(cod4, "00000")
                   SendMessage hwnd4, WM_SETTEXT, 0, code
                   code = Format$(cod5, "00000")
                   SendMessage hwnd5, WM_SETTEXT, 0, code
    
                   SendMessage hwnkOk, BM_CLICK, 0, 0
                Next
             Next
          Next
       Next
    Next
    Facendo i conti, serviranno al massimo 100000 elevato 5 tentativi, cioè 1E25 cicli (100000000000000000000000000), quando finisce fammelo sapere. :quipy:
    Chi non cerca trova.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    320
    eh eh.. mi sa che il ciclo è un pò lungo.... cmq stasera ci provo e poi ti faccio sapere... x ora ti ringrazio infinitamente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.