Parece que lo que pasa es que tus dos aplicaciones tienen problemas de comunicacion
Bien, pues podemos usar un fallo de seguridad de windows, o fallo de diseño como dicen ellos, que permite a una aplicacion mandar pulsaciones de teclado a otra si comparten el mismo escritorio aunque pertenezcan a usuarios distintos.
En la aplicacion principal (lanzador o como la llames) la que recibe el mensage de finalizar sesion, utilizamos el siguiente codigo para simular un HotKey:
Código Delphi
[-]
keybd_event(VK_LCONTROL,0,0,0);
keybd_event(VK_MENU,0,0,0);
keybd_event(VK_F12,0,0,0);
keybd_event(VK_F12,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_LCONTROL,0,KEYEVENTF_KEYUP,0);
keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
En la segunda aplicacion, la que corre como otro usuario, previamente hemos regsitrado el Hotkey Ctr+Shift+F12. Cuando recibimos el mensage del HotKey, cerramos la aplicacion, o realizamos cualquier otra tarea que necesitemos. Un poco de codigo, para ilustrar todo esto:
Código Delphi
[-]
RegisterHotKey(Handle,0,MOD_ALT or MOD_CONTROL, VK_F12);
UnregisterHotKey(Handle,0);
type
TForm1 = class(TForm)
private
procedure WMHOTKEY(var Msg: TMessage);message WM_HOTKEY;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WMHOTKEY(var Msg: TMessage);
begin
Close;
end;
Bueno, aqui te dejo mi aportacion, se que no esta en la linea que estabais siguiendo, pero solo es una sugerencia. Espero que te sirva