code: def take_screen_shot(self, screen_id, address, width, height, bitmap_format):
          
          if not isinstance(screen_id, baseinteger):
              raise TypeError("screen_id can only be an instance of type baseinteger")
          if not isinstance(address, basestring):
              raise TypeError("address can only be an instance of type basestring")
          if not isinstance(width, baseinteger):
              raise TypeError("width can only be an instance of type baseinteger")
          if not isinstance(height, baseinteger):
              raise TypeError("height can only be an instance of type baseinteger")
          if not isinstance(bitmap_format, BitmapFormat):
              raise TypeError("bitmap_format can only be an instance of type BitmapFormat")
          self._call("takeScreenShot",
                       in_p=[screen_id, address, width, height, bitmap_format])
docs: Takes a screen shot of the requested size and format and copies it to the
          buffer allocated by the caller and pointed to by @a address.
          The buffer size must be enough for a 32 bits per pixel bitmap,
          i.e. width * height * 4 bytes.
          
          This API can be used only locally by a VM process through the
          COM/XPCOM C++ API as it requires pointer support. It is not
          available for scripting languages, Java or any webservice clients.
          Unless you are writing a new VM frontend use
          :py:func:`take_screen_shot_to_array` .
  
          in screen_id of type int
  
          in address of type str
  
          in width of type int
  
          in height of type int
  
          in bitmap_format of type :class:`BitmapFormat`