"http://localhost:18083/")); //Logon to webservice $websessionManager = new IWebsessionManager($connection); // Dummy username and password (change to appropriate values or set authentication method to null) $virtualbox = $websessionManager->logon("username","password"); //Get a list of registered machines $machines = $virtualbox->machines; //Take a screenshot of the first vm we find that is running foreach ($machines as $machine) { if ( 'Running' == $machine->state ) { $session = $websessionManager->getSessionObject($virtualbox->handle); $uuid = $machine->id; $virtualbox->openExistingSession($session, $uuid); try { $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);