FileManager C++

  • 0 Respuestas
  • 2517 Vistas

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

Desconectado ANTRAX

  • *
  • Administrator
  • Mensajes: 5706
  • Actividad:
    30%
  • Country: ar
  • Reputación 37
  • ANTRAX
  • Skype: underc0de.org
  • Twitter: @Underc0de
    • Ver Perfil
    • Underc0de
    • Email

FileManager C++

  • 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 »


 

FileManager C

Iniciado por ANTRAX

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