View Full Version : [VB6] Problema con WebBrowser
wingman87
02-10-2006, 18:26
Ho creato un programmino che fa da autosurf (visita determinate pagine con tempi prefissati tutto da solo). Il problema è che ogni volta che il programma apre una nuova pagina se il programma è stato ridotto a icona si ripristina e si mette in primo piano diventando fastidioso. C'è un modo per impedirglielo e farlo restare ridotto a icona? Grazie mille!
wingman87
03-10-2006, 19:38
Uppo..
icecube_HU
04-10-2006, 14:23
Ho creato un programmino che fa da autosurf (visita determinate pagine con tempi prefissati tutto da solo). Il problema è che ogni volta che il programma apre una nuova pagina se il programma è stato ridotto a icona si ripristina e si mette in primo piano diventando fastidioso. C'è un modo per impedirglielo e farlo restare ridotto a icona? Grazie mille!
Ma il programma deve rimanere sempre invisibile/minimizzato fino a quando non ha letto tutte le pagine ?
Mi pare di ricordare che WebBrowser non funziona se il form e' invisibile....
Allora potresti fare cosi':
- PRIMA di caricare una nuova pagina, imposti la proprieta' Top del form su cui e' presente il WebBrowser ad un valore come -10000 (cosi' rimane fuori schermo e non e' visibile);
- carichi la pagina;
- reimposti WindowState a vbMinimized;
- quando hai finito tutte le pagine ripristini Top e WindowState;
Puo' esserti utile ??? Ciao !
wingman87
04-10-2006, 22:15
Grazie mille x la risposta. Il problema è che il form lo voglio poter vedere, cioè, se non l'ho minimizzato io non vorrei facesse tutte queste operazione, il problema si pone solo quando l'utente l'ha ridotto a icona. Se si potesse intercettare quando l'utente lo riduce a icona si potrebbe fare.. ma mi sa che non si può..
wingman87
25-10-2006, 11:41
UP
wingman87
26-10-2006, 19:27
UP
icecube_HU
27-10-2006, 18:22
Grazie mille x la risposta. Il problema è che il form lo voglio poter vedere, cioè, se non l'ho minimizzato io non vorrei facesse tutte queste operazione, il problema si pone solo quando l'utente l'ha ridotto a icona. Se si potesse intercettare quando l'utente lo riduce a icona si potrebbe fare.. ma mi sa che non si può..
Ho visto solo ora questa tua richiesta...
Certo che si puo': c'e' l'evento Resize che viene generato in questi casi !
Private Sub Form_Resize
If Me.WindowState = vbMinimized Then
' qui il codice da eseguire quando la finestra viene minimizzata...
End If
End Sub
Ciao !!
wingman87
03-11-2006, 23:05
Ciao, provando a fare quello che mi hai detto mi si è presentato il problema opposto, cioè devo intercettare quando l'utente clicca sull'icona per far riaprire la finestra, infatti se uso l'evento resize non posso distinguere se è stato l'utente a cliccare sull'icona o se è stato il webbrowser a far ingrandire la finestra.
X evitare che la finestra stia in primo piano ho trovato questa api:
http://www.allapi.net/apilist/SetWindowPos.shtml
wingman87
06-11-2006, 22:36
Non ho ancora trovato la soluzione! :help:
wingman87
07-11-2006, 22:31
Allora, faccio un piccolo riassunto:
- il programma salta fuori non ogni volta che il webbrowser carica una pagina ma solo a volte (forse quando nella pagina ci sono dei frame ma non ne sono sicuro)
- come ha detto icecube quando il webbrowser è invisibile non funziona
- il programma non deve stare sempre nascosto, semplicemente non deve apparire da solo dopo che l'ho ridotto a icona
Non c'è un modo x bloccare lo stato di una finestra e di sbloccarlo solo quando clicco sull'icona? Così potrei fare una cosa del genere:
Private Sub Form_Resize
If Me.WindowState = vbMinimized Then
'blocco lo stato della finestra
exit sub
End If
'sblocco lo stato della finestra
End Sub
Ma scommetto che è troppo facile x essere vero.. :(
wingman87
08-11-2006, 20:30
Allora, ho trovato una soluzione (per niente elegante) ma funzionante, si ispira un po' a quello che mi ha consigliato icecube. Ve la posto qui:
Private Sub Form_Resize()
If Me.WindowState = vbMinimized Then
If ridIcona = True Then
Me.WindowState = vbNormal
Me.top = topRec
Me.WindowState = vbMaximized
ridIcona = False
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
SetWindowPos Me.hwnd, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
Else
Me.WindowState = vbNormal
topRec = Me.top
Me.top = 30000
ridIcona = True
End If
Exit Sub
End If
End Sub
Se avete soluzioni migliori postatele. E' ancora imperfetto ci sarebbero altri controlli da fare ma l'idea è questa
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.