Si he entendido bien tu explicación, en un momento determinado la aplicación despertador necesita saber que usuario, si hay alguno, esta autentificado en la aplicación principal. No se de que tipo es el "identificador de usuario" pero si es de tipo integer se me ocurre una solución bastante sencilla.
La función SendMessage, como cualquier función, devuelve un valor. Este valor es de tipo integer, así que si el identificador del usuario es de tipo integer solo tendríamos que enviar como resultado del mensaje el valor del identificador.
Algo así (en la aplicación principal):
Código Delphi
[-]
const
WM_GETUSERID = WM_USER + 101;
type
TForm1 = class(TForm)
private
procedure GetUserId(var Msg: TMessage); message WM_GETUSERID;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.GetUserId(var Msg: TMessage);
begin
Msg.Result:= UserId;
end;
Y en el despertador:
Código Delphi
[-]
UserID:= SendMessage(Handle,WM_GETUSERID,0,0);