Jump to content


Photo

Explorar el ClipBoard en busca de ficheros copiados


  • Please log in to reply
No replies to this topic

#1 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 24 September 2009 - 05:50 PM

Si en el explorador seleccionamos una serie de archivos y activamos "copiar" del menú contextual, sus nombres los podremos encontrar en el clipboard de la siguiente manera:



cpp
  1. void __fastcall TForm1::ScanClipBoard()
  2. {
  3.   void *Data;
  4.   CloseClipboard();
  5.   bool b=OpenClipboard(Handle);
  6.   Data = GetClipboardData(CF_HDROP);
  7.   if(Data){
  8.     LPDROPFILES Buffer = (LPDROPFILES)GlobalLock(Data);
  9.     wchar_t *Files = (wchar_t*)((DWORD)Buffer + Buffer->pFiles);
  10.     Memo1->Lines->Clear();
  11.     while (*Files){
  12.         Memo1->Lines->Add(String(Files));
  13.         Files += wcslen(Files)+1;
  14.     } 
  15.     GlobalUnlock( Data );
  16.   }
  17.   CloseClipboard();
  18. }



Os dejo una aplicación simple de ejemplo. Se trata de un Visor del ClipBoard aprovechando la API SetClipboardViewer para interceptar los mensajes WM_DRAWCLIPBOARD para actualizarse y capturar el contenido del ClipBoard. Lo que nos interesa ahora es leer los datos tipo CF_HDROP

Que le saquéis partido.  :)

Saludos.
  • 0




IP.Board spam blocked by CleanTalk.