Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   API de Windows (https://www.clubdelphi.com/foros/forumdisplay.php?f=7)
-   -   Arrastrar archivo a un TrayIcon (https://www.clubdelphi.com/foros/showthread.php?t=83717)

ElDioni 19-07-2013 15:05:43

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.

Neftali [Germán.Estévez] 19-07-2013 16:12:43

Échale un vistazo a este artículo a ver si saces algo en claro.

ElDioni 29-07-2013 18:40:37

Gracias Neftali,

estoy en el trabajo sustituyendo a gente de vacaciones y no tengo tiempo para nada, voy a ver si saco un rato y hago algunas pruebas.

De nuevo, aunque un poco tarde, gracias, ya te contaré.

Saludos.


La franja horaria es GMT +2. Ahora son las 06:31:03.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi