Windows dosya drag drop ile alma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
tolgaozb
Üye
Mesajlar: 70
Kayıt: 26 Ara 2003 12:22
Konum: Karşıyaka
İletişim:

Windows dosya drag drop ile alma

Mesaj gönderen tolgaozb »

Selamlar

Yapmak istediğim kısaca windows gezginindeki bir dosyayı sürükle bırak ile programıma almak (dosya yolunu tespit etmek).
Konu hakkında internette ve forumda örnekler var.Fakat bu kodlar adım adım anlatılmasına rağmen nedense çalışmıyor.
Tahminin kodların eski olması ve anlatılanların windows 10 ile uyumlu olmaması.Örneklerin Windows 7 ile denendiği de yazıyor bir kaç yerde.
Windows 10 uyumlu örnek kod ya da component bilgisi olan var ise paylaşır ise sevinirim.

İşin detayında outlook'dan mail dosyasını sürükle bırak ile de almak istiyorum.
Bu ayrı bir yöntem ise bu da ayrıca öğrenmek istediğim bir nokta.

İyi çalışmalar
T.Tolga Özbaltalar - http://www.veridizayn.com
Kullanıcı avatarı
tuna
Üye
Mesajlar: 300
Kayıt: 07 Tem 2008 04:39
Konum: İstanbul

Re: Windows dosya drag drop ile alma

Mesaj gönderen tuna »

Kod: Tümünü seç

procedure Tfrmexcelgrup.AppMessage(var Msg: Tmsg; var Handled: Boolean);
const
   BufferLength : DWORD = 511;
var
   DroppedFilename   : string;
   FileIndex         : DWORD;
   NumDroppedFiles   : DWORD;
   pDroppedFilename  : array [0..511] of Char;
   DroppedFileLength : DWORD;
   excel:variant;
   i:integer;
begin
   if Msg.message = WM_DROPFILES then
   begin
     FileIndex := $FFFFFFFF;
     NumDroppedFiles := DragQueryFile(Msg.WParam, FileIndex,
                                      pDroppedFilename, BufferLength);

     for FileIndex := 0 to (NumDroppedFiles - 1) do
     begin
       DroppedFileLength := DragQueryFile(Msg.WParam, FileIndex,
                                          pDroppedFilename,
                                          BufferLength);
       DroppedFilename := StrPas(pDroppedFilename);


    exceldosya:=pDroppedFilename;  //DOSYA ADINI VE YOLUNU BURADAN ALIYORSUN. BURADAN SONRASINI BEN EXCEL İÇİN KULLANMIŞTIM. 
    Excel:=CreateOleObject('excel.Application');
    Excel.Workbooks.Open(exceldosya);
    ComboBox1.Clear;
    Label2.Caption:='Excel Dosyası: '+exceldosya;
    for i:=1 to Excel.Workbooks[1].Sheets.Count do
      begin
        ComboBox1.Items.Add(Excel.Workbooks[1].Sheets[i].Name);
      end;
    Excel.DisplayAlerts := False;
    Excel.Quit;
    Excel := Unassigned;
    cxButton2.Enabled:=false;




     end;
     DragFinish(Msg.WParam); //BUNU MUTLAKA EKLE
     Handled := true;  //BUNU MUTLAKA EKLE
   end;

end;

Formunun DRAGMODE özelliğini dmManuel yap
Yine formunun DRAKKIND özelliğini dkDrag yap

Kolay gelsin
Cevapla