public ScreenCaptureReply captureScreen(long timeout, List<String> knownMD5s)
      throws OperaRunnerException {
    assertLauncherAlive();

    String resultMd5;
    byte[] resultBytes;
    boolean blank = false;

    try {
      LauncherScreenshotRequest.Builder request = LauncherScreenshotRequest.newBuilder();
      request.addAllKnownMD5S(knownMD5s);
      request.setKnownMD5STimeoutMs((int) timeout);

      ResponseEncapsulation res = protocol.sendRequest(
          MessageType.MSG_SCREENSHOT, request.build().toByteArray());
      LauncherScreenshotResponse response = (LauncherScreenshotResponse) res.getResponse();

      resultMd5 = response.getMd5();
      resultBytes = response.getImagedata().toByteArray();

      if (response.hasBlank()) {
        blank = response.getBlank();
      }
    } catch (SocketTimeoutException e) {
      throw new OperaRunnerException("Could not get screenshot from launcher", e);
    } catch (IOException e) {
      throw new OperaRunnerException("Could not get screenshot from launcher", e);
    }

    ScreenCaptureReply.Builder builder = ScreenCaptureReply.builder();
    builder.setMD5(resultMd5);
    builder.setPNG(resultBytes);
    builder.setBlank(blank);
    builder.setCrashed(this.hasOperaCrashed());
    return builder.build();
  }
public ScreenCaptureReply captureScreen ( long timeout , List < String > knownMD5s ) throws OperaRunnerException { assertLauncherAlive ( ) ; String resultMd5 ; byte [ ] resultBytes ; boolean blank = false ; try { LauncherScreenshotRequest . Builder request = LauncherScreenshotRequest . newBuilder ( ) ; request . addAllKnownMD5S ( knownMD5s ) ; request . setKnownMD5STimeoutMs ( ( int ) timeout ) ; ResponseEncapsulation res = protocol . sendRequest ( MessageType . MSG_SCREENSHOT , request . build ( ) . toByteArray ( ) ) ; LauncherScreenshotResponse response = ( LauncherScreenshotResponse ) res . getResponse ( ) ; resultMd5 = response . getMd5 ( ) ; resultBytes = response . getImagedata ( ) . toByteArray ( ) ; if ( response . hasBlank ( ) ) { blank = response . getBlank ( ) ; } } catch ( SocketTimeoutException e ) { throw new OperaRunnerException ( "Could not get screenshot from launcher" , e ) ; } catch ( IOException e ) { throw new OperaRunnerException ( "Could not get screenshot from launcher" , e ) ; } ScreenCaptureReply . Builder builder = ScreenCaptureReply . builder ( ) ; builder . setMD5 ( resultMd5 ) ; builder . setPNG ( resultBytes ) ; builder . setBlank ( blank ) ; builder . setCrashed ( this . hasOperaCrashed ( ) ) ; return builder . build ( ) ; }
Take screenshot using external program.  Will not trigger a screen repaint.

@throws OperaRunnerException if runner is shutdown or not running
@inheritDoc