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
}
}
}
//------------------------------------------------------------------------------------------------------------------------------