Ver Mensaje Individual
  #3  
Antiguo 11-03-2009
Avatar de Faust
Faust Faust is offline
Miembro
 
Registrado: abr 2006
Ubicación: México D.F.
Posts: 930
Reputación: 19
Faust Va por buen camino
Cita:
Empezado por Black_Ocean Ver Mensaje
Hola,

No se por que lo encuentra tan curioso aquel código, ya que lo que hace es sólo asignarle un padre a la ventana de Mi PC que está actualmente abierta mediante el handle de ella, que en este caso el padre será la ventana del formulario. Además sólo servirá para una ventana que tenga como caption "Mi PC". Si otro programa tiene el mismo texto incluirá esa ventana, por eso usted debe asignarle aparte del texto de la ventana, el nombre de la clase de la ventana, pero aún así, sólo servirá para el lenguaje en español de Windows y no para otros idiomas del SO. También, sólo funcionará para la ventana del explorador de archivos que tenga ese texto y que esté actualmente abierta. Usted si desea incluir ventanas del explorador de archivos, debería crearla mediante las APIS de Windows y nombre de la clase de estas ventanas en tiempo de ejecución.

Pero bueno... aquí le propongo el siguiente ejemplo que le he hecho a la rápida en relación a lo que está arriba en su código, puede contener errores de ejecución, ya que es sólo un ejemplo, usted optimícelo y lea más en la ayuda acerca de estas funciones:

Código Delphi [-]var WHandle: THandle; PnlContenedor: TPanel; procedure IncluirWndHandle; begin WHandle := FindWindow('CabinetWClass', 'Mi PC'); if WHandle <> 0 then begin PnlContenedor := TPanel.Create(Form1); PnlContenedor.Parent := Form1; PnlContenedor.Align := alClient; Windows.SetParent(WHandle, PnlContenedor.Handle); end; end; procedure CerrarHandleWnd; begin SendMessage(WHandle, WM_DESTROY, 0, 0); DestroyWindow(PnlContenedor.Handle); end; procedure TForm1.BtnCerrarHandleWndClick(Sender: TObject); begin CerrarHandleWnd; end; procedure TForm1.BtnIncluirHandleWndClick(Sender: TObject); begin IncluirWndHandle; BtnCerrarHandleWnd.BringToFront; BtnIncluirHandleWnd.BringToFront; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin CerrarHandleWnd; end;



Cordiales saludos y espero que el ejemplo le sea de utilidad =)
Me parece curioso porque aún no le veo ninguna utilidad... de hecho en algún truco de trucomanía muestra como minimizar algunos controles dentro de un formulario, cosa que también le veo poca utilidad. Lo que me da curiosidad es como matar esa ventana, una vez dentro de mi form, el handle a esta ventana pareciera inválido, pero le echaré un ojo a tu código y veré si aprendo algo de ahí. Gracias.

Ah y un favor... no me escribas de usted, es que me siento viejo , mejor escríbeme de tu (quisiera seguir sintiéndome joven )

Saludos y gracias de nuevo.
__________________
Herr Heins Faust
Responder Con Cita