Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Drag and Drop archivos desde Explorer (https://www.clubdelphi.com/foros/showthread.php?t=90442)

adebonis 09-06-2016 13:20:46

Drag and Drop archivos desde Explorer
 
Buenos días.

Ya se que es un tema recurrente, pero estoy intentando que una aplicación permita arrastrar archivos desde el Explorador de Windows.
Utilizo Delphi 2007 y Windows 8.1
El caso es que al arrastrar un archivo el código del procedure, en este caso, AcceptFiles no se ejecuta.

Esta es la Form que utilizo:

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellApi, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
  private
    procedure AcceptFiles(var msg: TMessage); message WM_DROPFILES;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DragAcceptFiles(Handle, True);
end;

procedure TForm1.AcceptFiles(var msg: TMessage);
const
  cnMaxFileNameLen = 255;
var
  i, nCount: integer;
  FileName: array[0..cnMaxFileNameLen] of char;
begin
  nCount := DragQueryFile( msg.WParam, $FFFFFFFF, FileName, cnMaxFileNameLen);
  for i := 0 to nCount-1 do begin
    DragQueryFile(msg.WParam, i, FileName, cnMaxFileNameLen);
    memo1.Lines.add(FileName);
  end;
  DragFinish(msg.WParam);
end;

end.

Gracias de antemano.

Adolfo de Bonis

dec 09-06-2016 13:43:39

Hola,

Antes de probar con otra cosa... ¿no estarás ejecutando Delphi o el programa con permisos de administrador? Puesto que programas con diferentes permisos no pueden "arrastrarse archivos" entre sí...

dec 09-06-2016 16:28:36

Hola,

Por curiosidad he probado tu código y este funciona como se espera. De modo que tal vez sea lo que he dicho en mi anterior mensaje... u otra cosa...

adebonis 09-06-2016 20:02:32

Hola.

Gracias Dec. Era eso exactamente. Ejecutaba Delphi con permisos de administrador.

Adolfo de Bonis


La franja horaria es GMT +2. Ahora son las 09:36:13.

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