based on an earlier version of the Wolfram Language.
In Mathematica's unified symbolic architecture, every Mathematica notebook you see is represented as a symbolic expression that can be manipulated and controlled programmatically using Mathematica's symbolic language. Mathematica's low-level notebook programming functions give direct incremental access to notebook expressions, allowing you successively to perform arbitrary operations on the "selection" in any notebook.
NotebookLocate — locate a notebook, a web notebook, or a tag in a notebook
NotebookInformation — information on open notebooks
NotebookGet — get the symbolic representation of a displayed notebook
NotebookPut — display the notebook corresponding to a symbolic expression
NotebookFind — find a structure within a notebook
SelectionMove — move the selection in a notebook
NotebookRead — read the current selection as a symbolic expression
NotebookDelete — delete the current selection
NotebookSelection — a handle to a selection in a notebook
FrontEndTokenExecute — execute a menu-like front end command
FrontEndExecute — send an expression to be executed by the front end