Copy To Clipboard

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
SHURZAN
Üye
Mesajlar: 73
Kayıt: 06 Eki 2007 05:34
Konum: İstanbul

Copy To Clipboard

Mesaj gönderen SHURZAN »

merhabalar;
forum her ne kadar Delphi ağırlıklı olsada ortak paydamız Borland.
İhtiyacım oldu listelediğim dosyayı panoya alma, bir çok Delphi örneği buldum ama hiç C++ örneği yoktu ve c++ ile yeniden yazdım ihtiyaç olur diye eklemek istedim.
Başarılar...
Çalışan kod aşağıda:

Kod: Tümünü seç

/*öncelikle aşağıdaki _DROPFILES yapısı tanımlanmışsada eğer derleyici hatası alırsanız form1.h de yapıyı aşağıdaki gibi tanımlayın*/
typedef struct _DROPFILES {
   DWORD pFiles;                       // offset of file list
   POINT pt;                           // drop point (client coords)
   BOOL fNC;                           // is it on NonClient area
                                       // and pt is in screen coords
   BOOL fWide;                         // WIDE character switch
} DROPFILES, *LPDROPFILES;

//------------------------------------------------------------------------------------------------------------------------------
void copytoclipboard()
{
TFormatEtc FE;
  TStgMedium Medium;
  LPDROPFILES dropfiles;
  PChar pFile;
  String filename = "C:\\Benimdizinim\\benim.exe";
 filename +='\0';                                            //sonlandırıcı NULL karakteri eklemeyi unutmayalım.
  
 FE.cfFormat = CF_HDROP;                            // Windows formatını tanımlıyoruz
  FE.dwAspect = DVASPECT_CONTENT;
  Medium.hGlobal = GlobalAlloc(GMEM_SHARE | //Global bellek alanı ayırıyoruz
  GMEM_ZEROINIT, sizeof(DROPFILES)+filename.Length());
  if (Medium.hGlobal !=  NULL)
  {
   Medium.tymed = TYMED_HGLOBAL;
   dropfiles = (DROPFILES*)GlobalLock(Medium.hGlobal);
   try{
     dropfiles->pFiles = sizeof(DROPFILES);
     dropfiles->fWide  = false;
     pFile = (char*)(long(dropfiles)+sizeof(DROPFILES));   /*pointer (pFile) ayrılmış alandaki "dropfiles" yapısının sonunu göstermesini sağlıyoruz yani dosya adını yazacağımız adresi*/
      StrPCopy(pFile,filename);          //ayrılmış bellek alanına dosya adını yazıyoruz
      }
     __finally{
       GlobalUnlock(Medium.hGlobal); // bellek alanını işlemini bitirdik kilidi kaldırıyoruz
     }
   Clipboard()->Clear();                    //panodaki önceki bilgiyi temizliyoruz
   Clipboard()->SetAsHandle(CF_HDROP,(unsigned int)Medium.hGlobal); // panoya alıyoruz
   Clipboard()->Close();                     //işimiz bitti panoyu kapatıyoruz  
     } 
   }
}
//------------------------------------------------------------------------------------------------------------------------------
Cevapla