OK, based on the feedback provided I have created a solution to the problem. For the benefit of the community I'm posting this solution as an answer to my own question as your feedback, although very useful, missed some key elements.
Note that the variable mySizeAdjustments will most probably need to be adjusted by users depending on the operating system used and other system related parameters. Here is the code:
notebookScreenshot[nb_] := Block[
{left, top, size, opts, mySizeAdjustments = {18, 75}, windowMargins,
screenShot, buttonNb = SelectedNotebook[]}
,
Needs["GUIKit`"];
opts = AbsoluteOptions@nb;
windowMargins = Replace[WindowMargins, opts];
SetSelectedNotebook@nb;
If[ListQ@windowMargins,
{left, top} = Diagonal[windowMargins]
,
{left, top} = {0, 0}
];
size = mySizeAdjustments + Replace[WindowSize, opts];
screenShot = GUIKit`GUIScreenShot[{{left, left + size[[1]]}, {top, top + size[[2]]}}];
SetSelectedNotebook@buttonNb;
screenShot
];
Note that this solution can take screenshots of notebooks other than the ButtonNotebook or SelectedNotebook from where the command is run. To test the code you can use the following lines:
targetNb = CreateDocument[{TextCell["Need help", "Section"], TextCell["Can you help?"]}, WindowTitle -> "MyNotebook"];
notebookScreenshot@targetNb
In my case the output that the former lines produce is shown below:
CurrentNotebookImage
. :D $\endgroup$