Ver Mensaje Individual
  #7  
Antiguo 26-02-2007
Avatar de ArdiIIa
[ArdiIIa] ArdiIIa is offline
Miembro Premium
 
Registrado: nov 2003
Ubicación: Valencia city
Posts: 1.481
Reputación: 24
ArdiIIa Va por buen camino
Cita:
Empezado por seoane
cuando se pulsa Ctrl+Alt+Sup windows manda el mensaje WM_HOTKEY a una ventana del proceso winlogon.exe. Pues bien, hasta ahora he conseguido estar en el mismo desktop que esa ventana
Pues he estado haciendo varias pruebas y no hay manera de obtener un handle bueno en:
Código Delphi [-]
Desktop:= OpenDesktop('Winlogon', 0, FALSE, MAXIMUM_ALLOWED);
Con diferentes parámetros e incluso ejecutándolo como servicio, siempre Desktop me devuelve CERO, con lo cual, la jodi** clase SAS.. no la voy a ver nunca...

Al menos ya me he aclarado un poco con el tema de los desktop y para verlo con mis propios ojos he encontrado este código que es muy ilustrativo y sencillo:
Código Delphi [-]
//Hace falta un treeview
//CODIGO OBTENIDO DE: http://www.delphipraxis.net/topic23721.html

function EnumDesktopProc(lpszDesktop:LPTSTR;lParam:LPARAM):Boolean; stdcall;
Var Clase : Array[0..200] of char;
begin
Form1.Treeview1.Items.AddChild(Form1.Treeview1.Items.Item[lParam],lpszDesktop).AbsoluteIndex;
result:=true;
end;

function EnumWindowStationProc(lpszWindowStation:LPTSTR; lParam:LPARAM): Boolean; stdcall;
begin
EnumDesktops(OpenWindowStation(lpszWindowStation,false,GENERIC_READ),@EnumDesktopProc,Form1.Treeview  1.Items.AddChild(Form1.Treeview1.Items.Item[lParam],lpszWindowStation).AbsoluteIndex);
result:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Treeview1.Items.Clear;
EnumWindowStations(@EnumWindowStationProc,Treeview1.Items.AddChildFirst(nil,'PC').AbsoluteIndex);
Treeview1.FullExpand;
end;
Al final, a mí también me aburre el tema, así que dejo de curiosear, me parece demasiado esfuerzo para tan poca cosa... De hecho hay componentes y Dll GINA para meter mano al asunto, si se me diera el caso de necesitarlo, retomaría el asunto... pero lo dudo...
__________________
Un poco de tu generosidad puede salvar la vida a un niño. ASÍ DE SENCILLO
Responder Con Cita