Ver Mensaje Individual
  #1  
Antiguo 19-07-2013
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Reputación: 19
ElDioni Va por buen camino
Arrastrar archivo a un TrayIcon

Buenas a todos,

no se si se podrá hacer, no he encontrado nada al respecto, les cuento. Tengo dos trozos de código que he conseguido de aquí mismo, del club. Uno sirve para poner la aplicación al lado del reloj de windows, como un icono de sistema.

Código Delphi [-]
 procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
 begin
   if (Msg.CmdType = SC_MINIMIZE) then begin
     with IconData do
      begin
       cbSize := sizeof(IconData);
       Wnd := Handle;
       uID := 100;
       uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
       uCallbackMessage := WM_USER + 1;
       {Usamos de icono el mismo de la aplicacion}
       hIcon := Application.Icon.Handle;
       {Como Hint del icono, el nombre de la aplicacion}
       StrPCopy(szTip, Application.Title);
     end;
     {Ponemos el icono al lado del reloj}
     Shell_NotifyIcon(NIM_ADD, @IconData);
     {Ocultamos la Form...}
     Hide;
   end else DefaultHandler(Msg);
 end;

El otro código es para poder arrastrar archivos desde windows a mi aplicación.

Código Delphi [-]
procedure TForm1.AcceptFiles( var msg : TMessage );
const
  cnMaxFileNameLen = 255;
var
  i,
  nCount     : integer;
  acFileName : array [0..cnMaxFileNameLen] of char;
  FgThreadId  : DWORD; { Hilo de la app. que tenga el foco }
  AppThreadId : DWORD;
begin
// find out how many files we're accepting
nCount:=DragQueryFile(msg.WParam,$FFFFFFFF,acFileName,cnMaxFileNameLen);
// query Windows one at a time for the file name
for i := 0 to nCount-1 do
  begin
    DragQueryFile(msg.WParam,i,acFileName, cnMaxFileNameLen);
    // do your thing with the acFileName
    MessageBox(Handle,acFileName,'',MB_OK );
  end;
// let Windows know that you're done
DragFinish( msg.WParam );
end;

Los dos funcionan correctamente pero lo que no consigo es que funcione el código de arrastrar un archivo cuando la aplicación esta minimizada al lado del reloj, ¿como podría conseguir esto?, donde tendría que poner el código para que me aceptara el archivo, ahora lo tengo puesto en el FormCreate y cuando la aplicación no está minimizada funciona.

Espero que se entienda lo que quiero.

Saludos.
__________________
Confórmate con lo que tienes pero anhela lo que te falta.
Responder Con Cita