If you switch SendMessage() to PostMessage(), it will work:
uses
Winapi.Windows, Winapi.Messages;
procedure PasteTo(const AHWND: HWND);
begin
PostMessage(AHWND, WM_PASTE, 0, 0);
end;
var
notepad_hwnd, notepad_edit_hwnd: HWND;
begin
notepad_hwnd := FindWindow(nil, 'Untitled - Notepad');
if notepad_hwnd <> 0 then
begin
notepad_edit_hwnd := FindWindowEx(notepad_hwnd, 0, 'Edit', nil);
if notepad_edit_hwnd <> 0 then
PasteTo(notepad_edit_hwnd);
end;
end.
According to this thread, I beleive you cannot use SendMessage()/PostMessage() to send state of key modifiers (CTRL in this case), and that your only option is to go with SendInput(), but that will work only on window that currently has focus.