/** * Destory a progress operation. * * @param array $pop progress operation details * @return boolean true on success */ private function _util_progressDestroy($pop) { // Connect to vboxwebsrv $this->connect(); try { /* @var $progress IProgress */ $progress = new IProgress($this->client, $pop['progress']); $progress->releaseRemote(); } catch (Exception $e) { } try { // Close session and logoff try { if ($this->session->handle) { if ((string) $this->session->state != 'Unlocked') { $this->session->unlockMachine(); } $this->session->releaseRemote(); unset($this->session); } } catch (Exception $e) { $this->errors[] = $e; } // Logoff session associated with progress operation $this->websessionManager->logoff($this->vbox->handle); unset($this->vbox); } catch (Exception $e) { $this->errors[] = $e; } // Remove progress handles $this->persistentRequest = array(); return true; }
$console = $session->console; $display = $console->display; $screenWidth = $display->width; $screenHeight = $display->height; $imageraw = $display->takeScreenShotSlow($screenWidth, $screenHeight); $session->close(); $filename = './screenshot.png'; echo "Saving screenshot of " . $machine->name . " ({$screenWidth}x{$screenHeight}) to {$filename}\n"; $image = imagecreatetruecolor($screenWidth, $screenHeight); for ($height = 0; $height < $screenHeight; $height++) { for ($width = 0; $width < $screenWidth; $width++) { $start = ($height * $screenWidth + $width) * 4; $red = $imageraw[$start]; $green = $imageraw[$start + 1]; $blue = $imageraw[$start + 2]; //$alpha = $imageraw[$start+3]; $colour = imagecolorallocate($image, $red, $green, $blue); imagesetpixel($image, $width, $height, $colour); } } imagepng($image, $filename); } catch (Exception $ex) { // Ensure we close the VM Session if we hit a error, ensure we don't have a aborted VM echo $ex->getMessage(); $session->close(); } break; } } $websessionManager->logoff($virtualbox->handle);