All the meta boxes are kept in a multidimensional array, called $wp_meta_boxes. It will display all of the meta boxes registered for a specific screen and a specific context.
Use the following code:
function get_meta_boxes( $screen = null, $context = 'advanced' ) {
global $wp_meta_boxes;
if ( empty( $screen ) )
$screen = get_current_screen();
elseif ( is_string( $screen ) )
$screen = convert_to_screen( $screen );
$page = $screen->id;
return $wp_meta_boxes[$page][$context];
}
Now, if you want to get an array that contains all of the meta boxes that are of "normal" priority, you have to use the following code:
$dashboard_boxes = get_meta_boxes( 'dashboard', 'normal' );
do_action( 'add_meta_boxes_post', $post );
(or change 'post' in the action name to some other post type) but only in classes that start withedit
, and that's what populates $wp_meta_boxes. What exactly do you want to find - the contents of a particular box for a post?