( Index )
Month

Brief Information about the June 2000 CSIG Meeting

CBcopy--- Copying files from the clipboard.

Tuesday - June 20th 7:30PM - C/C++ Group, SPRS

Magazine Cover We will be discussing a program by Joey Rogers in this month's C/C++ Users Journal: Copying Files from the Clipboard to a Command Prompt. You can make DOS more of a first-class Windows citizen with this handy little clipboard utility. I wanted to be able to copy files from Windows Explorer to the Command Prompt's active directory via the Windows clipboard. This article provides a very simple utility, CBcopy, that will paste files copied onto the Windows clipboard into a Command Prompt's active directory. CBcopy works by opening the Windows clipboard and querying for a drop file handle (CF_HDROP), which points to a list of files currently on the clipboard. The functions OpenClipboard, GetClipboardData, GetCurrentDirectory, Global Lock, DragoueryFile, GlobalUnlock, and CloseClipboard are Win32-specific APIs.) For more info on the group see their home page or contact Bruce Arnold (908) 735-7898.


SAMPLE CODE
===========

void ProcessDirectory( char *file )
   {
// Make new subdirectory if necessary
   char newDirectory[_MAX_PATH];
   strcpy(newDirectory,destPath);
   strcat(newDirectory,&file[basePathSize-1]);
 
   if (noCopyFlag==0)
      {
      long stat=GetFileAttributes( newDirectory);
      if (stat==0xFFFFFFFF)
         {
         if (_mkdir(newDirectory)==-1)
            {
            cout << "Unable to create directory: " << newDirectory << endl;
            errorCount++;
            return;
            }
      }
   }
 
// Go through all of the files in the subdirectory
   struct _finddata_t c_file;
   long hFile;
   char searchPath[_MAX_PATH], newFile[_MAX_PATH];
 
   sprintf(searchPath,"%s\\*.*",file); // search for all files in dir
 
   if ((hFile = _findfirst( searchPath, &c_file ))!=-1L)    
      {
      if (strcmp(c_file.name,".")!=0 &&
          strcmp(c_file.name,"..")!=0)
          { 
          sprintf(newFile,"%s\\%s",file,c_file.name);
          ProcessFile( newFile);
          }
      }
   
   if (hFile!=-1)
      {
      while (_findnext(hFile,&c_file)==0)
            {
            if (strcmp(c_file.name,".")!=0 && 
                strcmp(c_file.name,"..")!=0)
                {
                sprintf(newFile,"%s\\%s",file,c_file.name);
                ProcessFile( newFile );
                }
            }
      _findclose(hFile);
      }
   }

"Random Access" questions start at 7:30 Tuesday night.

SOURCE CODE

Source Code Files

For help, email me at b a r n o l d @ i e e e . o r g
Back to C++ Main Page