Hola!
Veamos, supongo que al hilo que te refieres, fué al que comencé yo y que
Roman resolvió con un estupendo ejemplo... asi que a ver...
Código Delphi
[-]
procedure TMainForm.FormCreate(Sender: TObject);
const
Flags = DESKTOP_CREATEWINDOW or DESKTOP_SWITCHDESKTOP;
begin
LockDesktop := CreateDesktop('LockDesktop', nil, nil, 0, Flags, nil);
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
CloseDesktop(LockDesktop);
end;
procedure TMainForm.ExecuteLockApp;
var
StartInfo: TStartupInfo;
ProcInfo: TProcessInformation;
begin
FillChar(StartInfo, SizeOf(StartInfo), 0);
StartInfo.cb := SizeOf(StartInfo);
StartInfo.lpDesktop := PChar('LockDesktop');
CreateProcess('LockApp.exe', nil, nil, nil, false, 0, nil, nil, StartInfo, ProcInfo);
SwitchDesktop(LockDesktop);
end;
Si te fijas, en la linea:
CreateProcess('LockApp.exe', nil, nil, nil, false, 0, nil, nil, StartInfo, ProcInfo);
Esta linea lo que hace es ejecutar la aplicación
LockApp.exe en el escritorio que previamente se ha creado.. de forma que se te crea el escritorio (por lo tanto el anterior se te queda ocultado) y sobre el nuevo se te muestra la aplicación (lockapp.exe).
Por tanto el exe que ejecuta el nuevo escritorio es diferente al que muestra el mensaje de "Bloqueado".
Espero que lo entiendas, ya nos diras
Saludos!