comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

FileManager C++

  • 0 Respuestas
  • 1850 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Conectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5401
  • Actividad:
    40%
  • Reputación 31
  • ANTRAX
    • Ver Perfil
    • Underc0de
    • Email
  • Skype: underc0de.org
  • Twitter: @Underc0de
« en: Mayo 22, 2011, 09:51:11 pm »
Código: C++
  1. /* Windows File Manager V1 By Uranium-239 */
  2. /* Delete, Open, MD5 */
  3.  
  4. #include <windows.h>
  5. #include <strings.h>
  6. #include <fstream>
  7. #include <wincrypt.h>
  8.  
  9. using namespace std;
  10.  
  11. #define OPEN_OBJECT 0x01
  12. #define SHIFT_BACK  0x02
  13. #define MD5              0x03
  14. #define DEL              0x04
  15.  
  16. static HWND filelist = 0;
  17.  
  18. char directory[500]="C:\\";
  19.  
  20. void DeleteMyFile(char buffer[]){
  21.          char file[600];
  22.          strcpy(file,directory);
  23.          strcat(file,buffer);
  24.          if(MessageBox(0,file,"Delete this file?",MB_YESNO)==IDYES){
  25.                 DeleteFile(file);
  26.          }
  27. }
  28.  
  29. void MD5Hash(BYTE hash[],int sz,char sec[]){
  30.         HCRYPTPROV hProv = 0,hHash = 0;
  31.         BYTE rgbHash[16];
  32.         DWORD cbHash = 0;
  33.         char file[MAX_PATH],dig[] = "0123456789abcdef";
  34.         int l=0;
  35.        
  36.         CryptAcquireContext(&hProv,NULL,NULL,PROV_RSA_FULL,CRYPT_VERIFYCONTEXT);
  37.         CryptCreateHash(hProv,CALG_MD5,0,0,&hHash);
  38.         CryptHashData(hHash,hash,sz,0);
  39.         cbHash = 16;
  40.         CryptGetHashParam(hHash, HP_HASHVAL, rgbHash, &cbHash, 0);
  41.        
  42.         for(DWORD i=0;i<cbHash;i++){
  43.                 sec[l]=dig[rgbHash[i]>>4];
  44.                 l++;
  45.                 sec[l]=dig[rgbHash[i] & 0xf];
  46.                 l++;
  47.         }
  48.         for(l=32;l<strlen(sec);l++)sec[l]=0;
  49.        
  50.         CryptDestroyHash(hHash);
  51.         CryptReleaseContext(hProv, 0);
  52. }
  53.  
  54. int MessageBoxFileHashSum(char buffer[]){
  55.         char file[600];
  56.         strcpy(file,directory);
  57.         strcat(file,buffer);
  58.         ifstream read(file,ios::binary);
  59.         read.seekg(0,ios::end);
  60.         int l = read.tellg();
  61.         read.seekg(0,ios::beg);
  62.         char * buf = 0;
  63.         if((buf = (char*)malloc(l)) == NULL){
  64.                         MessageBox(0,"Directorys cannot be summed",0,0);
  65.                         return 0;
  66.         }
  67.         read.read(buf,l);
  68.         if(read.fail()){
  69.            free(buf);
  70.            MessageBox(NULL,"Error Opening File","Uranium-239",MB_OK);
  71.            return 0;
  72.         }
  73.         read.close();
  74.        
  75.         char hash[32];
  76.         MD5Hash((BYTE*)buf,l,hash);
  77.         free(buf);
  78.        
  79.         MessageBox(NULL,hash,"File Checksum:",MB_OK);
  80. }
  81.  
  82. void UpdateList(){
  83.         char path[500];
  84.         strcpy(path,directory);
  85.         strcat(path,"*.*");
  86.        
  87.         WIN32_FIND_DATA data;
  88.         HANDLE hFile = FindFirstFileA(path, &data);
  89.         SendMessage(filelist, LB_RESETCONTENT, 0, 0);
  90.         while(FindNextFile(hFile,&data)!=0)
  91.         {
  92.                         SendMessage(filelist, LB_INSERTSTRING, (WPARAM) -1, (LPARAM)data.cFileName);
  93.         }
  94.         FindClose(hFile);
  95. }
  96.  
  97. void RemoveLastDirectory(){
  98.          int i[3];
  99.          i[3]=strlen(directory);
  100.          for(i[0]=0;i[0]<i[3];i[0]++){
  101.                  if(directory[i[0]]=='\\'){
  102.                         i[2]=i[1];
  103.                         i[1]=i[0];
  104.                  }
  105.          }
  106.          for(i[2]++;i[2]<i[3];i[2]++)directory[i[2]]=0;
  107. }
  108.  
  109. /*  Declare Windows procedure  */
  110. LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);
  111.  
  112. /*  Make the class name into a global variable  */
  113. char szClassName[ ] = "FileViewer";
  114.  
  115. int WINAPI WinMain (HINSTANCE hThisInstance,
  116.                                         HINSTANCE hPrevInstance,
  117.                                         LPSTR lpszArgument,
  118.                                         int nFunsterStil)
  119.  
  120. {
  121.         HWND hwnd;                         /* This is the handle for our window */
  122.         MSG messages;                   /* Here messages to the application are saved */
  123.         WNDCLASSEX wincl;               /* Data structure for the windowclass */
  124.  
  125.         /* The Window structure */
  126.         wincl.hInstance = hThisInstance;
  127.         wincl.lpszClassName = szClassName;
  128.         wincl.lpfnWndProc = WindowProcedure;      /* This function is called by windows */
  129.         wincl.style = CS_DBLCLKS;                                /* Catch double-clicks */
  130.         wincl.cbSize = sizeof (WNDCLASSEX);
  131.  
  132.         /* Use default icon and mouse-pointer */
  133.         wincl.hIcon = LoadCursor (NULL, IDC_ARROW);
  134.         wincl.hIconSm = LoadCursor (NULL, IDC_ARROW);
  135.         wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
  136.         wincl.lpszMenuName = NULL;                               /* No menu */
  137.         wincl.cbClsExtra = 0;                                     /* No extra bytes after the window class */
  138.         wincl.cbWndExtra = 0;                                     /* structure or the window instance */
  139.         /* Use Windows's default color as the background of the window */
  140.         wincl.hbrBackground = (HBRUSH) CreateSolidBrush(RGB(1,1,1));
  141.  
  142.         /* Register the window class, and if it fails quit the program */
  143.         if (!RegisterClassEx (&wincl))
  144.                 return 0;
  145.  
  146.         /* The class is registered, let's create the program*/
  147.         hwnd = CreateWindowEx (
  148.                    0,                              /* Extended possibilites for variation */
  149.                    szClassName,          /* Classname */
  150.                    "File Manager",         /* Title Text */
  151.                    WS_OVERLAPPEDWINDOW, /* default window */
  152.                    100,    /* Windows decides the position */
  153.                    50,     /* where the window ends up on the screen */
  154.                    412,                          /* The programs width */
  155.                    460,                          /* and height in pixels */
  156.                    HWND_DESKTOP,                /* The window is a child-window to desktop */
  157.                    NULL,                                /* No menu */
  158.                    hThisInstance,          /* Program Instance handler */
  159.                    NULL                          /* No Window Creation data */
  160.                    );
  161.  
  162.         /* Make the window visible on the screen */
  163.         ShowWindow (hwnd, nFunsterStil);
  164.  
  165.         /* Run the message loop. It will run until GetMessage() returns 0 */
  166.         while (GetMessage (&messages, NULL, 0, 0))
  167.         {
  168.                 /* Translate virtual-key messages into character messages */
  169.                 TranslateMessage(&messages);
  170.                 /* Send message to WindowProcedure */
  171.                 DispatchMessage(&messages);
  172.         }
  173.  
  174.         /* The program return-value is 0 - The value that PostQuitMessage() gave */
  175.         return messages.wParam;
  176. }
  177.  
  178. /*  This function is called by the Windows function DispatchMessage()  */
  179.  
  180. LRESULT CALLBACK WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  181. {
  182.         static HWND open = 0;
  183.         static HWND back = 0;
  184.         static HWND md5 = 0;
  185.         static HWND del = 0;
  186.        
  187.         char buffer[500];
  188.         switch (message)                                  /* handle the messages */
  189.         {
  190.                 case WM_DESTROY:
  191.                         PostQuitMessage (0);       /* send a WM_QUIT to the message queue */
  192.                         break;
  193.                 case WM_CREATE:
  194.                          filelist=CreateWindow(
  195.                          "ListBox",
  196.                          0,
  197.                          WS_CHILD | LBS_MULTICOLUMN | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | LBS_DISABLENOSCROLL,
  198.                          2,2,400,400,
  199.                          hwnd,
  200.                          (HMENU)1,
  201.                          ((LPCREATESTRUCT) lParam)->hInstance,
  202.                          NULL
  203.                          );
  204.                          SendMessage(filelist,LB_SETCOLUMNWIDTH,(WPARAM)200,0);
  205.                          open = CreateWindow(
  206.                          "BUTTON",
  207.                          "Open",
  208.                          WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  209.                          2,390,100,30,
  210.                          hwnd,
  211.                          (HMENU)OPEN_OBJECT,
  212.                          ((LPCREATESTRUCT) lParam)->hInstance,
  213.                          NULL
  214.                          );
  215.                          back = CreateWindow(
  216.                          "BUTTON",
  217.                          "Back",
  218.                          WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  219.                          100,390,100,30,
  220.                          hwnd,
  221.                          (HMENU)SHIFT_BACK,
  222.                          ((LPCREATESTRUCT) lParam)->hInstance,
  223.                          NULL
  224.                          );
  225.                          md5 = CreateWindow(
  226.                          "BUTTON",
  227.                          "MD5 Sum",
  228.                          WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  229.                          200,390,100,30,
  230.                          hwnd,
  231.                          (HMENU)MD5,
  232.                          ((LPCREATESTRUCT) lParam)->hInstance,
  233.                          NULL
  234.                          );
  235.                          del = CreateWindow(
  236.                          "BUTTON",
  237.                          "Delete",
  238.                          WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  239.                          300,390,100,30,
  240.                          hwnd,
  241.                          (HMENU)DEL,
  242.                          ((LPCREATESTRUCT) lParam)->hInstance,
  243.                          NULL
  244.                          );
  245.                          UpdateList();
  246.                 case WM_COMMAND:
  247.                          if (HIWORD(wParam) == BN_CLICKED)
  248.                          {
  249.                                    int c;
  250.                                    switch(LOWORD(wParam)){
  251.                                                   case DEL:
  252.                                                            c = SendMessage(filelist, LB_GETCURSEL, 0, 0);
  253.                                                            SendMessage(filelist,LB_GETTEXT,(WPARAM)c,(LPARAM)buffer);
  254.                                                            DeleteMyFile(buffer);
  255.                                                            UpdateList();
  256.                                                            break;
  257.                                                   case MD5:
  258.                                                            c = SendMessage(filelist, LB_GETCURSEL, 0, 0);
  259.                                                            SendMessage(filelist,LB_GETTEXT,(WPARAM)c,(LPARAM)buffer);
  260.                                                            MessageBoxFileHashSum(buffer);
  261.                                                            break;
  262.                                                   case SHIFT_BACK:
  263.                                                            RemoveLastDirectory();
  264.                                                            UpdateList();
  265.                                                            break;
  266.                                                   case OPEN_OBJECT:
  267.                                                            BOOL file;
  268.                                                            c = SendMessage(filelist, LB_GETCURSEL, 0, 0);
  269.                                                            SendMessage(filelist,LB_GETTEXT,(WPARAM)c,(LPARAM)buffer);
  270.                                                            if(strcmp(buffer,"..")==0){
  271.                                                            RemoveLastDirectory();
  272.                                                            }else{
  273.                                                                    if(strstr(buffer,".")!=NULL)file=TRUE;
  274.                                                                    else file=FALSE;
  275.                                                                    if(file==FALSE){
  276.                                                                           strcat(buffer,"\\");
  277.                                                                           strcat(directory,buffer);
  278.                                                                    }else{
  279.                                                                    char p_b[500];
  280.                                                                    strcpy(p_b,directory);
  281.                                                                    strcat(p_b,buffer);
  282.                                                                    ShellExecute(0,"open",p_b,0,0,SW_SHOW);
  283.                                                                    }
  284.                                                            }
  285.                                                            UpdateList();
  286.                                                            break;
  287.                                    }
  288.                          }                             
  289.                 default:                                          /* for messages that we don't deal with */
  290.                         return DefWindowProc (hwnd, message, wParam, lParam);
  291.         }
  292.  
  293.         return 0;
  294. }
  295.  
  296.  
  297.  
  298.  
  299. =========================================================
  300.  
  301.  
  302. void RemoveLastDirectory(){
  303.          int i[3];
  304.          i[3]=strlen(directory);
  305.          for(i[0]=0;i[0]<i[3];i[0]++){
  306.                  if(directory[i[0]]=='\\'){
  307.                         i[2]=i[1];
  308.                         i[1]=i[0];
  309.                  }
  310.          }
  311.          for(i[2]++;i[2]<i[3];i[2]++)directory[i[2]]=0;
  312. }
« Última modificación: Febrero 08, 2014, 05:51:12 pm por Expermicid »


 

¿Te gustó el post? COMPARTILO!



FileManager C

Iniciado por ANTRAX

Respuestas: 0
Vistas: 1816
Último mensaje Mayo 22, 2011, 09:50:21 pm
por ANTRAX