PDA

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