Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762

    [COM & PHP] Problemino con sleep per imagegrabwindow()

    Salve a tutti,

    dunque avrei un problemino con la funzione sleep() . O forse ho un altro problemino..ad ogni modo, il problemone è che ho la necessità di ottenere l'immagine di una pagina con la funzione imagegrabwindow() ma il risultato è..pagina bianca.

    Qui il codice. Eppure ci sono 7 secondi di attesa!

    Codice PHP:
    <?php
    $browser 
    = new COM("InternetExplorer.Application");
    $browser->Height=800;
    $browser->Width=1280;
    $browser->Top=0;
    $browser->Left=0;
    $browser->Silent=true;
    $browser->Visible=true;
    $browser->Navigate("http://www.sito-a-tua-scelta.it");
    $focus $browser->HWND;
    sleep(7);
    $im imagegrabwindow($focus);
    imagepng($im"myscreenshot.png");
    imagedestroy($im);
    $browser->Quit();
    $browser=null;
    ?>
    Consigli?

    Grazie in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    uppino

  3. #3
    se lo aumenti hai qualche risultato?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    No purtroppo daniele..

  5. #5
    il problema però non è che è bianca ... ma che è nera (o almeno da me è nera )

    Parte del problema è dovuto al fatto che la finestra non è visibile quindi il sistema operativo non disegna nulla nel buffer video dell'handle associato alla finestra (HWND per intenderci) e quindi prendi un immagine delle giuste dimensioni ma nera (-> fondamentalmente vuota)

    che versione di windows stai usando?

    hai abilitato la spunta per permettere al servizio di apache di interagire con il desktop?

    Su windows 7 non funziona, non serve nemmeno mettere che deve essere eseguito con lo stesso utente che ha fatto il login, ma su windows xp dovrebbe essere sufficiente indicare che deve poter interagire con il desktop
    Su windows 7 per farlo funzionare ho dovuto avviare apache manualmente, ovvero senza farlo partire come servizio, e a questo punto il problema si è risolto

    Con questo codice a me va con apache fatto partire manualmente
    codice:
    <?php 
    
    set_time_limit(0);
    
    $browser = new COM("InternetExplorer.Application"); 
    $browser->Height=768; 
    $browser->Width=1024; 
    $browser->Top=0; 
    $browser->Left=0; 
    $browser->Silent=true; 
    $browser->Visible=true; 
    $browser->Navigate2("http://www.google.it"); 
    
    do
    {
        com_message_pump(4000);
        usleep(25000);
    }
    while($browser->readyState != 4);
    
    $HWND = $browser->HWND; 
    
    $im = imagegrabwindow($HWND, 1);
    
    header("Content-Type: image/png");
    imagepng($im); 
    imagedestroy($im); 
    $browser->Quit(); 
    $browser=null; 
    
    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Cavolo! Dunque mi da schermata bianca anche a me. Ho Windows Vista.

    Ad ogni modo, ho abbandonato la soluzione COM perchè sono impossibitato nel farlo in produzione...sto in hosting.

    Quindi sto optando per un'interazione Php, Javascript, AJAX.....e poi magari effettuo le dovute operazioni con le funzioni Php per il crop delle immagini.

    Nel frattempo ti ringrazio tantissimo per il tempo che ci hai dedicato!

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Ad ogni modo...se riuscissi a capire come fare per portare "on top" la finestra di IE aperta via COM...potrei utilizzare "imagegrabscreen()"...ma tant'è!!

  8. #8
    il problema non è portarla on top ma devi permettere di far interagire il servizio apache con il desktop altrimenti internet explorer parte ... ma nel desktop dell'utente "NETWORK SERVICES" (o qualcosa del genere, non ricordo il nome di preciso) a cui tu però ovviamente non puoi accedere e da qui la schermata nera

    ma attenzione, ripeto, se tu la vedi bianca è un altro paio di maniche!

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    762
    Si si qui da me tutto ok. Schermata bianca con contenuto "google" in alto...in definitiva (nel mio caso) è solo un problema di "tempo" (credo..altrimenti boh).

    Perchè è capitato che (ma in un unico e primo tentativo) che lo screenshot venisse effettuato con successo. Ma poi stop!

    ...boh...non lo sò...

  10. #10
    se metti questo pezzo di codice prima di eseguire lo screenshot dovresti risolvere il problema

    codice:
    do
    {
        com_message_pump(4000);
        usleep(25000);
    }
    while($browser->readyState != 4);
    se non si risolve cambia
    $browser->readyState != 4

    con
    $browser->Busy()

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 © 2025 vBulletin Solutions, Inc. All rights reserved.