Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: (PHP) Odpalanie programu zewnętrznego w tle (niewidzialnie)
Forum PHP.pl > Forum > PHP
mikolajjj
Witam,
uporałem się (mniej więcej z wykonywaniem screenshoota strony. korzystam, jak w manualu, z interfejsu COM. nie jest to w pełni satysfakconujące rozwiązanie (i serwer i klient musi być na Windzie, a screen generuje się tylko na Internet Explorerze), ale chyba doszedłem do ściany, inaczej się chyba nie da. kod wygląda następująco

  1. <?php
  2. $browser = new COM("InternetExplorer.Application");
  3. $handle = $browser->HWND;
  4. $browser->Visible = true;
  5. $browser->Fullscreen = true;
  6.  
  7. $browser->Navigate("http://www.google.com/");
  8.  
  9. /* Still working? */
  10. while ($browser->Busy) {
  11. com_message_pump(4000);
  12. }
  13. $im = imagegrabwindow($handle, 0);
  14. $browser->Quit();
  15. imagejpeg($im, "image.jpg");
  16. imagedestroy($im);
  17. ?>
  18.  


Teraz przy odpaleniu wypluwa mi IE w fullscreenie, a po załadowaniu automatycznie zamyka. chodzi mi o to czy istnieje możliwość, aby to działo się niewidzialnie, żeby system otwierał IE w celu wygenerowania screena, ale jakby w tle, aby użytkownik (korzystający np. z ff) nie musiał tego widzieć. Wybaczcie, ale inaczej tego nie potrafię zwerbalizować, chyba wiecie o co mi chodzi.

dodam, że jeśli zakomentuję linijkę z Visible, otrzymuję czarną grafikę.

szukałem jakiejś dokumentacji do HWND ale nie znalazłem nic sensownego.
webdice
Spróbuj:

  1. $browser->Visible = false;
mikolajjj
też czarne zapisuje
vermis
No ale ten kod się wykonuje na serwerze, a nie u klienta, czyli najwyżej admin zobaczy wyskakujące IE. Klient w przeglądarce dostaje tylko obrazek z serwera. Pewnie pracujesz na localhost (czyli na serwerze) stąd masz taki efekt.
mikolajjj
ok, fakt, ale czy znajdę jakiś hosting z obsługą IE? potrzebuję (jakkolwiek) robić screenshot przez przeglądarkę (chodzi o usability, aby użytkownik nie musiał bawić się dodatkowym softem, tylko mógł zrobić screenshota od razu w przeglądarce), to dla mnie o tylko ważne, że potem obraz ma być przycinany.

czy znajdę jakieś sensowne rozwiązanie?
vermis
Ale ty chcesz robić zrzut tego co klient widzi na ekranie, czy zapisać obraz strony www? Teraz już nie za bardzo wiem jak jest cel.
mikolajjj
użytkownik coś robi na stronie (jakaś funcjonalność oparta na flashu), a potem zapisuje sobie screen tej strony. chodzi o uwzględnienie zmian zmian na stronie.
vermis
Rozumiem. Żeby zrobić to po stronie serwera musiałbyś mieć możliwość odtworzenia tego co zapisał klient i co aktualnie widać. Jeśli to jakaś aplikacja oparta w całości na flashu to może lepiej wykorzystać flasha do zrzucenia widocznej części do pliku graficznego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.