⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send_to_hd.c

📁 执行和去除共享软件日期限制的程序
💻 C
📖 第 1 页 / 共 4 页
字号:
                                sizeof(lpFriendlyName), // cchMultiByte,
                                NULL,                   // lpDefaultChar,
                                NULL) ;                  // lpUsedDefaultChar

             break;

         case STRRET_OFFSET:

             lstrcpy(lpFriendlyName, (LPSTR)lpi+str.uOffset) ;
             break;

         case STRRET_CSTR:

             lstrcpy(lpFriendlyName, (LPSTR)str.cStr) ;
             break;

         default:
             bSuccess = FALSE;
             break;
      }
   }
   else
      bSuccess = FALSE;

   return bSuccess;
}

LPITEMIDLIST GetFullyQualPidl(LPSHELLFOLDER lpsf, LPITEMIDLIST lpi)
{
   char szBuff[MAX_PATH];
   OLECHAR szOleChar[MAX_PATH];
   LPSHELLFOLDER lpsfDeskTop;
   LPITEMIDLIST  lpifq;
   ULONG ulEaten, ulAttribs;
   HRESULT hr;

   if( !GetName(lpsf, lpi, SHGDN_FORPARSING, szBuff))
      return NULL;

   hr=SHGetDesktopFolder(&lpsfDeskTop) ;

   if( FAILED(hr))
      return NULL;

   MultiByteToWideChar(CP_ACP,
					   MB_PRECOMPOSED,
					   szBuff,
					   -1,
					   szOleChar,
					   sizeof(szOleChar)) ;

   hr=lpsfDeskTop -> lpVtbl -> ParseDisplayName(lpsfDeskTop,
											NULL,
											NULL,
											szOleChar,
											&ulEaten,
											&lpifq,
											&ulAttribs) ;

   lpsfDeskTop -> lpVtbl -> Release(lpsfDeskTop) ;

   if( FAILED(hr))
      return NULL;

   return lpifq;
}

int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
{
   SHFILEINFO    sfi;

   SHGetFileInfo((LPCSTR)lpi,
                 0,
                 &sfi,
                 sizeof(SHFILEINFO),
                 uFlags) ;

   return sfi.iIcon;
}

HICON GetFileIcon(LPSTR lpi)
{
   SHFILEINFO    sfi;

   SHGetFileInfo((LPCSTR)lpi,
                 0,
                 &sfi,
                 sizeof(SHFILEINFO),
                 SHGFI_ICON) ;

   return sfi.hIcon;
}

void GetNormalAndSelectedIcons(LPITEMIDLIST lpifq,
                               LPTV_ITEM lptvitem)
{
   //Note that we don't check the return value here because if GetIcon()
   //fails, then we're in big trouble...

   lptvitem -> iImage = GetIcon(lpifq, SHGFI_PIDL |
                              SHGFI_SYSICONINDEX |
                              SHGFI_SMALLICON) ;

   lptvitem -> iSelectedImage = GetIcon(lpifq, SHGFI_PIDL |
                                      SHGFI_SYSICONINDEX |
                                      SHGFI_SMALLICON |
                                      SHGFI_OPENICON) ;

   return;
}


void FillTreeView(	HWND hwndTreeView,
					LPSHELLFOLDER lpsf,
					LPITEMIDLIST lpifq,
					HTREEITEM hParent)
{
    TV_ITEM         tvi;                          // TreeView Item.
    TV_INSERTSTRUCT tvins;                        // TreeView Insert Struct.
    HTREEITEM       hPrev = NULL;                 // Previous Item Added.
    LPSHELLFOLDER   lpsf2=0;
    LPENUMIDLIST    lpe=0;
    LPITEMIDLIST    lpi=0,lpifqThisItem;// lpiTemp=0, lpifqThisItem;
    LPTVITEMDATA    lptvid=0;
    LPMALLOC        lpMalloc=0;
    ULONG           ulFetched;
    HRESULT         hr;
    char            szBuff[256];
    HWND            hwnd=GetParent(hwndTreeView) ;

    hr=SHGetMalloc(&lpMalloc) ;
    if( FAILED(hr))
       return;

    SetCapture(GetParent(hwndTreeView)) ;
    SetCursor(LoadCursor(NULL, IDC_WAIT)) ;

    if( SUCCEEDED(hr))
    {
        hr=lpsf -> lpVtbl -> EnumObjects(lpsf,
                                     hwnd,
                                     SHCONTF_FOLDERS | SHCONTF_NONFOLDERS|SHCONTF_INCLUDEHIDDEN,
                                     &lpe) ;

        if( SUCCEEDED(hr))
        {
            while (S_OK==lpe -> lpVtbl -> Next(lpe,
                                           1,
                                           &lpi,
                                           &ulFetched))
            {
                ULONG ulAttrs = SFGAO_HASSUBFOLDER | SFGAO_FOLDER;

                lpsf -> lpVtbl -> GetAttributesOf(lpsf, 1, (LPCITEMIDLIST)&lpi, &ulAttrs) ;

                if( ulAttrs & (SFGAO_HASSUBFOLDER | SFGAO_FOLDER))
                {
                   if( ulAttrs & SFGAO_FOLDER)
                   {
                      tvi.mask            = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE |
                                            TVIF_PARAM;

                      if( ulAttrs & SFGAO_HASSUBFOLDER)
                      {
                         tvi.cChildren=1;
                         tvi.mask |= TVIF_CHILDREN;
                      }

                      lptvid = (LPTVITEMDATA)lpMalloc -> lpVtbl -> Alloc(lpMalloc, sizeof(TVITEMDATA)) ;
                      if( !lptvid)
                         goto Done;

                      if( !GetName(lpsf, lpi, SHGDN_NORMAL, szBuff))
                         goto Done;
                      tvi.pszText    = szBuff;
                      tvi.cchTextMax = MAX_PATH;

                      lpifqThisItem=ConcatPidls(lpifq, lpi) ;

                      lptvid -> lpi=CopyITEMID(lpMalloc, lpi) ;

                      GetNormalAndSelectedIcons(lpifqThisItem, &tvi) ;

                      lptvid -> lpsfParent=lpsf;    //Store the parent folders SF
                      lpsf -> lpVtbl -> AddRef(lpsf) ;

                      if( hParent==TVI_ROOT)
                         lptvid -> lpifq=ConcatPidls(lpifq, lpi) ;
                      else
                         lptvid -> lpifq=GetFullyQualPidl(lpsf, lpi) ;

                      tvi.lParam = (LPARAM)lptvid;

                      tvins.item         = tvi;
                      tvins.hInsertAfter = hPrev;
                      tvins.hParent      = hParent;

                      hPrev = TreeView_InsertItem(hwndTreeView, &tvins) ;

//////the next code expand all item but CD-ROM in Tree view/////////
//
//TreeView_Expand(hwndTreeView,hPrev,TVE_TOGGLE);
//
/////code end//////////////////////////////////////////////////////
                   }

                   lpMalloc -> lpVtbl -> Free(lpMalloc, lpifqThisItem) ;
                   lpifqThisItem=0;
                }

                lpMalloc -> lpVtbl -> Free(lpMalloc, lpi) ;  //Finally, free the pidl that the shell gave us...
                lpi=0;
            }
        }

    }
    else
       return;

Done:

    ReleaseCapture() ;
    SetCursor( LoadCursor( NULL, IDC_ARROW)) ;

    if( lpe)
		lpe -> lpVtbl -> Release( lpe) ;

    if( lpi && lpMalloc)
		lpMalloc -> lpVtbl -> Free(lpMalloc, lpi) ;
    if( lpifqThisItem && lpMalloc)
		lpMalloc -> lpVtbl -> Free(lpMalloc, lpifqThisItem) ;

    if( lpMalloc)
		lpMalloc -> lpVtbl -> Release(lpMalloc) ;
}void DoCopy(void){   char s[MAX_PATH];	SHFILEOPSTRUCT shop;   BOOL bnouse=FALSE;   WIN32_FIND_DATA wfile,wdest;   char dst[MAX_PATH];   HANDLE h,hFile;	shop.hwnd=hMainWnd;   shop.wFunc=dofileop.uOp;   shop.pTo=szFoldername;   if(dofileop.bNoAsk)	   shop.fFlags=FOF_NOCONFIRMATION;   else   	shop.fFlags=FOF_ALLOWUNDO;   shop.fAnyOperationsAborted=bnouse;   shop.hNameMappings=NULL;   shop.lpszProgressTitle=NULL;   if(szFoldername[1]!=':')   {   	GetWindowsDirectory(szFoldername,MAX_PATH);      strcat(szFoldername,"\\desktop\0");   }   while(DoCheckCommand())   {      if(dofileop.bNoFolder)      {         if(GetFileAttributes(szSourceFile)==FILE_ATTRIBUTE_DIRECTORY)         {         	ZeroMemory(s,MAX_PATH);            wsprintf(s,"%s\\*.*",szSourceFile);            SetCurrentDirectory(szSourceFile);            hFile=FindFirstFile(s,&wfile);            while(FindNextFile(hFile,&wfile))            {               if(stricmp(wfile.cFileName,"..")==0)               	continue;               ZeroMemory(s,MAX_PATH);               wsprintf(s,"%s\\",szSourceFile);					strcat(s,wfile.cFileName);            	shop.pFrom=s;               if(dofileop.bUpdate)			      {			      	wsprintf(dst,"%s\\%s",shop.pTo,wfile.cFileName);         			if((h=FindFirstFile(dst,&wdest))!=INVALID_HANDLE_VALUE)			         {         			  	if(memcmp(&wfile.ftLastWriteTime,&wdest.ftLastWriteTime,sizeof(FILETIME))!=0 ||			               wfile.nFileSizeHigh!=wdest.nFileSizeHigh || wfile.nFileSizeLow!=wdest.nFileSizeLow)
         			      SHFileOperation(&shop);
			         }
         			else
			         	SHFileOperation(&shop);
         			FindClose(h);
			      }
			      else
        				SHFileOperation(&shop);            }            FindClose(hFile);            continue;         }      }   	shop.pFrom=szSourceFile;		if(dofileop.bUpdate)      {         wsprintf(dst,"%s\\%s",shop.pTo,wfile.cFileName);         if((h=FindFirstFile(dst,&wdest))!=INVALID_HANDLE_VALUE)         {           	if(memcmp(&wfile.ftLastWriteTime,&wdest.ftLastWriteTime,sizeof(FILETIME))!=0 ||               wfile.nFileSizeHigh!=wdest.nFileSizeHigh || wfile.nFileSizeLow!=wdest.nFileSizeLow)
               SHFileOperation(&shop);
         }
         else
         	SHFileOperation(&shop);
         FindClose(h);
      }
      else
        	SHFileOperation(&shop);   }   wsprintf(szRunCommand,szForCheck);}void ResetFileOp(void){	dofileop.uOp=FO_COPY;   dofileop.bUpdate=FALSE;   dofileop.bNoFolder=FALSE;   dofileop.bNoAsk=FALSE;}BOOL DoCheckCommand(void){	int i;   ZeroMemory(szSourceFile,MAX_PATH);   if(szRunCommand[0]=='\0')   	return FALSE;   for(i=0;i<(int)strlen(szRunCommand);i++)   {   	if(szRunCommand[i]!=' ')      	szSourceFile[i]=szRunCommand[i];      else      {         int j;      	strcat(szSourceFile,"\0\0");         for(j=0;j<(int)strlen(szRunCommand)-i-1;j++)           	szRunCommand[j]=szRunCommand[i+j+1];         szRunCommand[j]='\0';         szRunCommand[j+1]='\0';         return TRUE;      }   }	if(szRunCommand[i]=='\0')   {   	wsprintf(szRunCommand,"\0\0");   	return TRUE;   }   return FALSE;}void ExpandTree(void){   HTREEITEM hTree;   hTree=TreeView_GetRoot(hTreeWnd);   if(hTree)   	TreeView_Expand(hTreeWnd,hTree,TVE_EXPAND);}#pragma argsusedBOOL CALLBACK WINAPI MsgProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam){	switch(uMsg)   {   	case WM_INITDIALOG:      	break;      case WM_COMMAND:      	switch(LOWORD(wParam))         {         	case IDOK:            	if(IsDlgButtonChecked(hWnd,IDC_NOSHOWNEXT)==BST_CHECKED)               {               	REGVALINFO ri;                  int x=1;		            ri.szValName="NoMsg";					   ri.dwType=REG_DWORD;
			   		ri.lpData=(LPBYTE)&x;
			   		ri.cbData=sizeof(DWORD);            		RegSetGroupVal(HKEY_LOCAL_MACHINE,"SOFTWARE\\phonix\\sharewareluncher",1,&ri);                  bNoMsg=TRUE;               }               EndDialog(hWnd,TRUE);               return TRUE;            case IDCANCEL:            	EndDialog(hWnd,FALSE);               return FALSE;         }         break;      case WM_CLOSE:      	EndDialog(hWnd,FALSE);	         return FALSE;   }   return FALSE;}#pragma argsusedBOOL CALLBACK WINAPI AskDelProc(HWND hWnd,UINT uMsg,UINT wParam,LONG lParam){	switch(uMsg)   {   	case WM_INITDIALOG:      	break;      case WM_COMMAND:      	switch(LOWORD(wParam))         {         	case IDOK:            	bDelNoAsk=TRUE;               EndDialog(hWnd,TRUE);               return TRUE;            case IDCANCEL:					EndDialog(hWnd,FALSE);               return FALSE;            case IDHELP:               bDelNoAsk=FALSE;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -