SHARE
TWEET

Untitled

loic1112 Aug 22nd, 2019 59 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Install.cpp : Définit le point d'entrée de l'application.
  2. //
  3.  
  4. #include "framework.h"
  5. #include "Install.h"
  6.  
  7. using namespace std;
  8. #define _CRT_SECURE_NO_WARNINGS
  9.  
  10. #define MAX_LOADSTRING 100
  11.  
  12.  
  13.  
  14. // Variables globales :
  15. HINSTANCE hInst;                                // instance actuelle
  16. WCHAR szTitle[MAX_LOADSTRING];                  // Texte de la barre de titre
  17. WCHAR szWindowClass[MAX_LOADSTRING];            // nom de la classe de fenêtre principale
  18.  
  19.             bool i = true;
  20.  
  21. HWND g_listView;
  22. HWND g_listViewOk;
  23. HWND g_listViewNo;
  24. HWND progressBar;
  25. HWND textbox;                   //global list handle
  26. HWND textboxParam;                  //global list handle
  27. HWND buttonRefresh;                 //global list handle
  28. HWND ButtonInstallFirst;                    //global list handle
  29. RECT rcClient;
  30.  
  31.  
  32. // Déclarations anticipées des fonctions incluses dans ce module de code :
  33. ATOM                MyRegisterClass(HINSTANCE hInstance);
  34. BOOL                InitInstance(HINSTANCE, int);
  35. LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
  36. INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
  37. INT_PTR CALLBACK    AIDE(HWND, UINT, WPARAM, LPARAM);
  38.  
  39. int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
  40.                      _In_opt_ HINSTANCE hPrevInstance,
  41.                      _In_ LPWSTR    lpCmdLine,
  42.                      _In_ int       nCmdShow)
  43. {
  44.  
  45.     UNREFERENCED_PARAMETER(hPrevInstance);
  46.     UNREFERENCED_PARAMETER(lpCmdLine);
  47.  
  48.     // TODO: Placez le code ici.
  49.  
  50.     // Initialise les chaînes globales
  51.     LoadStringW(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
  52.     LoadStringW(hInstance, IDC_INSTALL, szWindowClass, MAX_LOADSTRING);
  53.     MyRegisterClass(hInstance);
  54.  
  55.     // Effectue l'initialisation de l'application :
  56.     if (!InitInstance (hInstance, nCmdShow))
  57.     {
  58.         return FALSE;
  59.     }
  60.  
  61.     HACCEL hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_INSTALL));
  62.  
  63.     MSG msg;
  64.  
  65.     // Boucle de messages principale :
  66.     while (GetMessage(&msg, nullptr, 0, 0))
  67.     {
  68.         if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
  69.         {
  70.             TranslateMessage(&msg);
  71.             DispatchMessage(&msg);
  72.         }
  73.     }
  74.  
  75.     return (int) msg.wParam;
  76. }
  77.  
  78.  
  79. //
  80. //  FONCTION : MyRegisterClass()
  81. //
  82. //  OBJECTIF : Inscrit la classe de fenêtre.
  83. //
  84. ATOM MyRegisterClass(HINSTANCE hInstance)
  85. {
  86.     WNDCLASSEXW wcex;
  87.  
  88.     wcex.cbSize = sizeof(WNDCLASSEX);
  89.  
  90.     wcex.style          = CS_HREDRAW | CS_VREDRAW;
  91.     wcex.lpfnWndProc    = WndProc;
  92.     wcex.cbClsExtra     = 0;
  93.     wcex.cbWndExtra     = 0;
  94.     wcex.hInstance      = hInstance;
  95.     wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_INSTALL));
  96.     wcex.hCursor        = LoadCursor(nullptr, IDC_ARROW);
  97.     wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
  98.     wcex.lpszMenuName   = MAKEINTRESOURCEW(IDC_INSTALL);
  99.     wcex.lpszClassName  = szWindowClass;
  100.     wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
  101.  
  102.     return RegisterClassExW(&wcex);
  103. }
  104.  
  105. //
  106. //   FONCTION : InitInstance(HINSTANCE, int)
  107. //
  108. //   OBJECTIF : enregistre le handle d'instance et crée une fenêtre principale
  109. //
  110. //   COMMENTAIRES :
  111. //
  112. //        Dans cette fonction, nous enregistrons le handle de l'instance dans une variable globale, puis
  113. //        nous créons et affichons la fenêtre principale du programme.
  114. //
  115. BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  116. {
  117.  
  118.     if (!IsElevated()) {
  119.         //warningMessageBoxAdmin = MessageBox(hWnd, L"Veulliez relancer avec les permission administrateur", L"ERREUR", MB_OK | MB_ICONWARNING);
  120.  
  121.         const int result = MessageBox(NULL, L"Veulliez relancer avec les permission administrateur", L"ERREUR", MB_OK);
  122.  
  123.         switch (result)
  124.         {
  125.         case IDOK:
  126.             PostQuitMessage(0);
  127.  
  128.         }
  129.  
  130.     }
  131.  
  132.  
  133.    hInst = hInstance; // Stocke le handle d'instance dans la variable globale
  134.  
  135.    HWND hWnd = CreateWindowW(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
  136.       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
  137.  
  138.    if (!hWnd)
  139.    {
  140.       return FALSE;
  141.    }
  142.  
  143.    ShowWindow(hWnd, nCmdShow);
  144.    UpdateWindow(hWnd);
  145.  
  146.    return TRUE;
  147. }
  148.  
  149. //
  150. //  FONCTION : WndProc(HWND, UINT, WPARAM, LPARAM)
  151. //
  152. //  OBJECTIF : Traite les messages pour la fenêtre principale.
  153. //
  154. //  WM_COMMAND  - traite le menu de l'application
  155. //  WM_PAINT    - Dessine la fenêtre principale
  156. //  WM_DESTROY  - génère un message d'arrêt et retourne
  157. //
  158. //
  159.  
  160.  
  161.  
  162. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  163. {
  164.     switch (message)
  165.     {
  166.     case WM_COMMAND:
  167.         {
  168.  
  169.        
  170.             int wmId = LOWORD(wParam);
  171.             // Analyse les sélections de menu :
  172.             switch (wmId)
  173.             {
  174.             case ID_AIDE_AIDE:
  175.                 DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, AIDE);
  176.                 break;
  177.             case IDM_ABOUT:
  178.                 DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
  179.                 break;
  180.             case IDM_EXIT:
  181.                 DestroyWindow(hWnd);
  182.                 break;
  183.             case BP_VALIDATION:
  184.  
  185.  
  186.             ValidationBP(hWnd);
  187.  
  188.             /*if (EnumInstalledSoftware("DiscordSetup")) {
  189.                 MessageBox(hWnd, L"OUI", L"VAVA", 1);
  190.                     DestroyWindow(hWnd);
  191.                 }
  192.                 else {
  193.                     MessageBox(hWnd, L"non", L"VAVA", 1);
  194.                 }
  195.             */
  196.                 break;
  197.             case BP_REFRESH:
  198.                 wchar_t password[100];
  199.  
  200.                 Edit_GetText(
  201.                     textbox,
  202.                     password, 100);
  203.  
  204.                 //MessageBox(hWnd, password, L"VAVA", 1);
  205.                 listViewAdd(hWnd);
  206.  
  207.                 break;
  208.  
  209.             default:
  210.                 return DefWindowProc(hWnd, message, wParam, lParam);
  211.             }
  212.  
  213.  
  214.    
  215.  
  216.         }
  217.         break;
  218.     case WM_CREATE: {
  219.  
  220.         GetClientRect(hWnd, &rcClient);
  221.  
  222.         createTextBox(hWnd);
  223.         createListView(hWnd);
  224.         createButtonRefresh(hWnd);
  225.         createButtonInstallFirst(hWnd);
  226.         createTextBoxParam(hWnd);
  227.         createListViewOk(hWnd);
  228.         createListViewN(hWnd);
  229.         createProgressBar(hWnd);
  230.        
  231.         break;
  232.     }
  233.     case WM_PAINT:
  234.         {
  235.  
  236.  
  237.             PAINTSTRUCT ps;
  238.             HDC hdc = BeginPaint(hWnd, &ps);
  239.             // TODO: Ajoutez ici le code de dessin qui utilise hdc...
  240.  
  241.             GetClientRect(hWnd, &rcClient);
  242.  
  243.  
  244.             /*createTextBox(hWnd);
  245.             createListView(hWnd);
  246.             createButtonRefresh(hWnd);
  247.             createButtonInstallFirst(hWnd);
  248.             createTextBoxParam(hWnd);
  249.             createListViewOk(hWnd);
  250.             createListViewN(hWnd);
  251.             createProgressBar(hWnd);
  252.            
  253.             //testestset(hdc);
  254.             /*
  255.             //listViewAdd(hWnd);
  256.  
  257.             //MessageBox(hWnd, L"BVZYHFVDUYJQ", L"VAVA", 1);
  258.  
  259.             HIMAGELIST hImageList = ImageList_Create(16, 16, ILC_COLOR, 2, 0);
  260.             HBITMAP    hbmBlobs = (HBITMAP)LoadImage((HINSTANCE)L"C:\\Users\\loicm\\source\\repos\\Install\\DATA\\FileZilla_3.42.0_win64_sponsored-setup.exe",
  261.                 MAKEINTRESOURCE(1), IMAGE_BITMAP, 0, 0, 0);
  262.  
  263.  
  264.             /*HICON hIcon = (HICON)LoadImage( // returns a HANDLE so we have to cast to HICON
  265.                 NULL,             // hInstance must be NULL when loading from a file
  266.                 L"C:\\Users\\loicm\\source\\repos\\Install\\DATA\\FileZilla_3.42.0_win64_sponsored-setup.exe",   // the icon file name
  267.                 IMAGE_ICON,       // specifies that the file is an icon
  268.                 0,                // width of the image (we'll specify default later on)
  269.                 0,                // height of the image
  270.                 LR_LOADFROMFILE |  // we want to load a file (as opposed to a resource)
  271.                 LR_DEFAULTSIZE |   // default metrics based on the type (IMAGE_ICON, 32x32)
  272.                 LR_SHARED         // let the system release the handle when it's no longer used
  273.             );
  274.        
  275.             DrawIconEx(hdc, 0, 0, (HICON)hbmBlobs, 72, 78, 0, NULL, DI_NORMAL);
  276.             */
  277.  
  278.             EndPaint(hWnd, &ps);
  279.         }
  280.         break;
  281.     case WM_DESTROY:
  282.         PostQuitMessage(0);
  283.         break;
  284.     default:
  285.         return DefWindowProc(hWnd, message, wParam, lParam);
  286.     }
  287.     return 0;
  288. }
  289.  
  290. // Gestionnaire de messages pour la boîte de dialogue À propos de.
  291. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  292. {
  293.     UNREFERENCED_PARAMETER(lParam);
  294.     switch (message)
  295.     {
  296.     case WM_INITDIALOG:
  297.         return (INT_PTR)TRUE;
  298.  
  299.     case WM_COMMAND:
  300.         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  301.         {
  302.        
  303.             EndDialog(hDlg, LOWORD(wParam));
  304.             return (INT_PTR)TRUE;
  305.         }
  306.         break;
  307.     }
  308.     return (INT_PTR)FALSE;
  309. }
  310.  
  311. // Gestionnaire de messages pour la boîte de dialogue À propos de.
  312. INT_PTR CALLBACK AIDE(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  313. {
  314.     UNREFERENCED_PARAMETER(lParam);
  315.     switch (message)
  316.     {
  317.     case WM_INITDIALOG:
  318.         return (INT_PTR)TRUE;
  319.  
  320.     case WM_COMMAND:
  321.         if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
  322.         {
  323.  
  324.             EndDialog(hDlg, LOWORD(wParam));
  325.             return (INT_PTR)TRUE;
  326.         }
  327.         break;
  328.     }
  329.     return (INT_PTR)FALSE;
  330. }
  331.  
  332. #pragma comment(lib, "comctl32.lib")
  333. #pragma comment(lib, "Shell32.lib")
  334. #pragma warning(disable : 4996)
  335. /*#pragma comment(linker,"\"/manifestdependency:type='win32' \
  336. name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
  337. processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
  338. */
  339.  
  340. size_t findCaseInsensitive(std::string data, std::string toSearch, size_t pos = 0)
  341. {
  342.     // Convert complete given String to lower case
  343.     std::transform(data.begin(), data.end(), data.begin(), ::tolower);
  344.     // Convert complete given Sub String to lower case
  345.     std::transform(toSearch.begin(), toSearch.end(), toSearch.begin(), ::tolower);
  346.     // Find sub string in given string
  347.     return data.find(toSearch, pos);
  348. }
  349.  
  350. void ValidationBP(HWND hWnd) {
  351.     ListView_DeleteAllItems(g_listViewOk);
  352.     ListView_DeleteAllItems(g_listViewNo);
  353.     SendMessage(progressBar, PBM_SETPOS, 0, 0);
  354.  
  355.     TCHAR buff[100];
  356.     GetWindowText(textbox, buff, 100);
  357.  
  358.     vector<string> list = getAllFileData(hWnd, buff);
  359.  
  360.     int image = 0;
  361.     int ii = ListView_GetItemCount(
  362.         g_listView
  363.     );
  364.    
  365.     for (int i = 0; i < ii; i++) {
  366.  
  367.         if (ListView_GetCheckState(
  368.             g_listView,
  369.             i
  370.         )) {
  371.             SendMessage(progressBar, PBM_SETRANGE, 0, MAKELPARAM(0, (i + 1)));
  372.            
  373.         }
  374.     }
  375.  
  376.     for (int i = 0; i < ii; i++) {
  377.  
  378.         if (ListView_GetCheckState(
  379.             g_listView,
  380.             i
  381.         )) {
  382.  
  383.             wchar_t buffer[2048] = { 0 };
  384.  
  385.             ListView_GetItemText(
  386.                 g_listView,
  387.                 i,
  388.                 1,
  389.                 buffer,    
  390.                 2048  
  391.             );
  392.  
  393.             TCHAR buffs[100];
  394.             GetWindowText(textbox, buffs, 100);
  395.             TCHAR buff2[100];
  396.             GetWindowText(textboxParam, buff2, 100);
  397.             installSof(hWnd, buffs, buffer, buff2, image);
  398.             SendMessage(progressBar, PBM_SETPOS, (i++), 0);
  399.  
  400.         }
  401.     image++;
  402.     }
  403.    
  404.  
  405. }
  406.  
  407. vector<string> getAllFileData(HWND hWnd, wchar_t* directory) {
  408.  
  409.     int i = 0;
  410.  
  411.     vector<string> s;
  412.  
  413.     HANDLE hFind;
  414.     WIN32_FIND_DATA data;
  415.  
  416.     wstring ws = (directory);
  417.     // your new String
  418.     ws = ws + L"\\*.*";
  419.     //ws.append(L"\\");
  420.  
  421.     const wchar_t* wcharPath = ws.c_str();
  422.  
  423.     //string str(ws.begin(), ws.end());
  424.  
  425.     //ReplaceAll(str, std::string(" "), std::string(" "));
  426.          
  427.    // MessageBox(hWnd, wcharPath, L"VAVA", 1);
  428.  
  429.  
  430.     hFind = FindFirstFile(wcharPath, &data);
  431.  
  432.     if (hFind != INVALID_HANDLE_VALUE) {
  433.         do {
  434.            
  435.             wstring str = data.cFileName;
  436.             std::string ss(str.begin(), str.end());
  437.  
  438.             size_t pos = findCaseInsensitive(ss, ".exe");
  439.  
  440.             if (pos != std::string::npos) {
  441.                 s.push_back(ss);
  442.                 i++;
  443.             }
  444.  
  445.             pos = findCaseInsensitive(ss, ".msi");
  446.  
  447.             if (pos != std::string::npos) {
  448.                 s.push_back(ss);
  449.                 i++;
  450.             }
  451.  
  452.  
  453.            
  454.             //printf("%s\n", data.cFileName);
  455.         } while (FindNextFile(hFind, &data));
  456.         FindClose(hFind);
  457.     }
  458.    
  459.     return s;
  460.  
  461. }
  462.  
  463. void createListView(HWND hWnd) {
  464.     InitCommonControls();
  465.  
  466.     LONG bottom = rcClient.bottom;
  467.     LONG left = rcClient.left;
  468.     LONG right = rcClient.right;
  469.     LONG top = rcClient.top;
  470.  
  471.     g_listView = CreateWindow(WC_LISTVIEW, L"", WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT | WS_HSCROLL | WS_VSCROLL,
  472.         left + 30,
  473.         top + 100,
  474.         right - 500,
  475.         bottom - 120,
  476.         hWnd,
  477.         NULL, hInst, NULL);
  478.  
  479.     ListView_SetExtendedListViewStyle(g_listView, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT | LVS_SMALLICON | LV_VIEW_SMALLICON |
  480.         LVS_EX_AUTOCHECKSELECT
  481.         /*LVSCW_AUTOSIZE_USEHEADER*/);
  482.  
  483.     LVCOLUMN lvCol;
  484.  
  485.     lvCol.mask =  LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
  486.     //lvCol.fmt = LVCFMT_CENTER;
  487.     lvCol.cx = 40;
  488.  
  489.     TCHAR Text[32];
  490.     _tcscpy(Text, _T(""));
  491.  
  492.     lvCol.pszText = Text;
  493.     lvCol.iSubItem = 0;
  494.  
  495.     ListView_InsertColumn(g_listView, 0, &lvCol);
  496.  
  497.  
  498.     _tcscpy(Text, _T("Nom"));
  499.     lvCol.cx = 300;
  500.     lvCol.pszText = Text;
  501.     lvCol.iSubItem = 1;
  502.  
  503.     ListView_InsertColumn(g_listView, 1, &lvCol);
  504. }
  505.  
  506.  
  507. void listViewAdd(HWND hWnd) {
  508.        
  509.     TCHAR buff[100];
  510.     GetWindowText(textbox, buff, 100);
  511.  
  512.     vector<string> list = getAllFileData(hWnd, buff);
  513.     ListView_DeleteAllItems(g_listView);
  514.  
  515.     HIMAGELIST hSmall;
  516.     hSmall = ImageList_Create(16,
  517.         16,
  518.         ILC_COLOR32, 1, 1);
  519.  
  520.     HIMAGELIST hSmalln;
  521.     hSmalln = ImageList_Create(16,
  522.         16,
  523.         ILC_COLOR32, 1, 1);
  524.  
  525.  
  526.         LVITEM lvItem;
  527.  
  528.         lvItem.mask = LVIF_TEXT | LVIF_IMAGE;
  529.         lvItem.iItem = 0;
  530.         lvItem.iSubItem = 0;
  531.  
  532.         int pss = 0;
  533.         int image = 0;
  534.  
  535.     for (pss = list.size() - 1 ; pss >= 0; pss--) {
  536.     //for (int i = 0 ; i < list.size(); i++) {
  537.         string ttt = list[pss];
  538.         std::wstring widestr = std::wstring(ttt.begin(), ttt.end());
  539.         const wchar_t* widecstr = widestr.c_str();
  540.         ImageList_AddIcon(hSmall, ImageList(buff, widecstr));
  541.    
  542.     }  
  543.  
  544.  
  545.     for (int i = 0; i < list.size(); i++) {
  546.         string ttt = list[i];
  547.         std::wstring widestr = std::wstring(ttt.begin(), ttt.end());
  548.         const wchar_t* widecstr = widestr.c_str();
  549.         ImageList_AddIcon(hSmalln, ImageList(buff, widecstr));
  550.  
  551.     }
  552.  
  553.     ListView_SetImageList(g_listView, hSmall, LVSIL_SMALL);
  554.     ListView_SetImageList(g_listViewOk, hSmalln, LVSIL_SMALL);
  555.     ListView_SetImageList(g_listViewNo, hSmalln, LVSIL_SMALL);
  556.  
  557.     for (pss = list.size() - 1 ; pss >= 0; pss--) {
  558.     //for (int i = 0 ; i < list.size(); i++) {
  559.            
  560.         lvItem.iImage = image;
  561.         string ttt = list[pss];
  562.         std::wstring widestr = std::wstring(ttt.begin(), ttt.end());
  563.         const wchar_t* widecstr = widestr.c_str();
  564.  
  565.         TCHAR Text[70];
  566.        
  567.         _tcscpy(Text, L" ");
  568.         lvItem.pszText = Text;
  569.  
  570.         ListView_InsertItem(g_listView, &lvItem);  
  571.        
  572.         _tcscpy(Text, widecstr);
  573.  
  574.         ListView_SetItemText(g_listView, 0, 1, Text);
  575.         image++;
  576.  
  577.    
  578.  
  579.     }
  580.  
  581.  
  582.         /*lvItem.iItem = 0;
  583.         ListView_InsertItem(g_listView, &lvItem);
  584.  
  585.         TCHAR Text[70];
  586.  
  587.         _tcscpy(Text, L"dadad");
  588.  
  589.         ListView_SetItemText(g_listView, 0, 1, Text);
  590.         ListView_SetCheckState(g_listView, 0, FALSE);
  591.         */
  592. }
  593.  
  594. void tes(HWND hWnd) {
  595.     STARTUPINFO si;
  596.     PROCESS_INFORMATION pi;
  597.     LPTSTR args = (LPTSTR)malloc(100 * sizeof(char));
  598.  
  599.     ZeroMemory(&si, sizeof(si));
  600.     si.cb = sizeof(si);
  601.     ZeroMemory(&pi, sizeof(pi));
  602.  
  603.     TCHAR Text[250];
  604.     _tcscpy(Text, _T("C:\\Users\\loicm\\Downloads\\gimp-2.10.12-setup-1.exe /VERYSILENT /SUPRESSMSGBOXES /NORESTART /ALLUSERS /LOG=C:\\lol.txt"));
  605.  
  606.     //if (CreateProcess(NULL, "E:\\app_installer.exe \\S", NULL, NULL, FALSE, 0, NULL, NULL, &StartupInfo, &ProcessInfo))
  607.     if (CreateProcess(NULL, Text, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
  608.  
  609.     {
  610.         MessageBox(hWnd, L"BVZYHFVDUYJQ", L"VAVA", 1);
  611.         WaitForSingleObject(pi.hProcess, INFINITE);
  612.         CloseHandle(pi.hThread);
  613.         CloseHandle(pi.hProcess);
  614.  
  615.     }
  616.     else
  617.     {
  618.         MessageBox(hWnd, L"NOP", L"VAVA", 1);
  619.     }
  620. }
  621.  
  622. void installSof(HWND hWnd, wstring url, wstring exec, wstring command,int id) {
  623.  
  624.     STARTUPINFO si;
  625.     PROCESS_INFORMATION pi;
  626.     LPTSTR args = (LPTSTR)malloc(100 * sizeof(char));
  627.  
  628.     ZeroMemory(&si, sizeof(si));
  629.     si.cb = sizeof(si);
  630.     ZeroMemory(&pi, sizeof(pi));
  631.  
  632.     TCHAR Text[250];
  633.  
  634.     wstring ws = url + exec + L" " + command;
  635.  
  636.     const wchar_t* wcharPath = ws.c_str();
  637.     _tcscpy(Text, wcharPath);
  638.  
  639.     if (CreateProcess(NULL, Text, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
  640.  
  641.     {
  642.         WaitForSingleObject(pi.hProcess, INFINITE);
  643.         CloseHandle(pi.hThread);
  644.         CloseHandle(pi.hProcess);
  645.  
  646.         exec = ReplaceWCSWithPattern(exec,L".exe",L"");
  647.         exec = ReplaceWCSWithPattern(exec, L".msi", L"");
  648.  
  649.         TCHAR Textss[250];
  650.         wstring wsss = exec;
  651.         const wchar_t* wcharPathss = wsss.c_str();
  652.         _tcscpy(Textss, wcharPathss);
  653.  
  654.         LVITEM lvItem;
  655.         lvItem.mask = LVIF_TEXT | LVIF_IMAGE;
  656.         lvItem.iImage = id;
  657.         lvItem.iItem = 0;
  658.         lvItem.iSubItem = 0;
  659.  
  660.         TCHAR Text[70];
  661.  
  662.         _tcscpy(Text, wcharPathss);
  663.         lvItem.pszText = Text;
  664.  
  665.         std::string s = utf8_encode(exec);
  666.         std::string delimiter = " ";
  667.         std::string token = s.substr(0, s.find(delimiter)); // token is "scott"
  668.  
  669.         wstring ws = ansi2unicode(token);
  670.         const wchar_t* wcharPath = ws.c_str();
  671.         Sleep(2000);
  672.         /*
  673.         if (EnumInstalledSoftware32(token)) {
  674.             ListView_InsertItem(g_listViewOk, &lvItem);
  675.  
  676.         }
  677.         else if(EnumInstalledSoftware64(token)){
  678.             ListView_InsertItem(g_listViewOk, &lvItem);
  679.  
  680.         }
  681.         else if(EnumInstalledSoftwareUser(token)){
  682.             ListView_InsertItem(g_listViewOk, &lvItem);
  683.  
  684.         }
  685.         else {
  686.             ListView_InsertItem(g_listViewNo, &lvItem);
  687.  
  688.         }*/
  689.  
  690.         if (EnumInstalledSoftware(token)) {
  691.  
  692.             ListView_InsertItem(g_listViewOk, &lvItem);
  693.  
  694.         }
  695.         else {
  696.  
  697.             ListView_InsertItem(g_listViewNo, &lvItem);
  698.  
  699.         }
  700.  
  701.     }
  702.     else
  703.     {
  704.  
  705.     }
  706.  
  707.  
  708. }
  709.  
  710.  
  711.  
  712.  
  713. bool EnumInstalledSoftware32(std::string name)
  714. {
  715.     HKEY hUninstKey = NULL;
  716.     HKEY hAppKey = NULL;
  717.     WCHAR sAppKeyName[1024];
  718.     WCHAR sSubKey[1024];
  719.     WCHAR sDisplayName[1024];
  720.     const wchar_t* sRoot = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  721.  
  722.     long lResult = ERROR_SUCCESS;
  723.     DWORD dwType = KEY_ALL_ACCESS;
  724.     DWORD dwBufferSize = 0;
  725.  
  726.     //Open the "Uninstall" key.
  727.     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sRoot, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
  728.     {
  729.         return false;
  730.     }
  731.  
  732.     for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
  733.     {
  734.         //Enumerate all sub keys...
  735.         dwBufferSize = sizeof(sAppKeyName);
  736.         if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
  737.             &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
  738.         {
  739.             //Open the sub key.
  740.             wsprintf(sSubKey, L"%s\\%s", sRoot, sAppKeyName);
  741.             if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
  742.             {
  743.                 RegCloseKey(hAppKey);
  744.                 RegCloseKey(hUninstKey);
  745.                 MessageBox(NULL, sSubKey, L"EROOROROOR", 5);
  746.  
  747.                 return false;
  748.             }
  749.  
  750.             //Get the display name value from the application's sub key.
  751.             dwBufferSize = sizeof(sDisplayName);
  752.             if (RegQueryValueEx(hAppKey, L"DisplayName", NULL,
  753.                 &dwType, (unsigned char*)sDisplayName, &dwBufferSize) == ERROR_SUCCESS)
  754.             {
  755.                 wprintf(L"%s\n", sDisplayName);
  756.  
  757.                 std::string test = unicode2ansi(sDisplayName);
  758.  
  759.                 //std::wstring stemp = std::wstring(test.begin(), test.end());
  760.                 //LPCWSTR sw = (LPCWSTR)stemp.c_str();
  761.  
  762.                 size_t pos = findCaseInsensitive(test, name);
  763.  
  764.                 if (pos != std::string::npos) {
  765. #ifdef _DEBUG
  766.                     MessageBox(NULL, sDisplayName, L"RG x32", 1);
  767. #endif     
  768.                     return true;
  769.                 }
  770.  
  771.             }
  772.             else {
  773.                 //Display name value doe not exist, this application was probably uninstalled.
  774.  
  775.             }
  776.  
  777.             RegCloseKey(hAppKey);
  778.         }
  779.     }
  780.  
  781.     RegCloseKey(hUninstKey);
  782.     return false;
  783.  
  784. }
  785.  
  786. bool EnumInstalledSoftware64(std::string name)
  787. {
  788.     HKEY hUninstKey = NULL;
  789.     HKEY hAppKey = NULL;
  790.     WCHAR sAppKeyName[1024];
  791.     WCHAR sSubKey[1024];
  792.     WCHAR sDisplayName[1024];
  793.     const wchar_t* sRoot = L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  794.  
  795.     long lResult = ERROR_SUCCESS;
  796.     DWORD dwType = KEY_ALL_ACCESS;
  797.     DWORD dwBufferSize = 0;
  798.  
  799.     //Open the "Uninstall" key.
  800.     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sRoot, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
  801.     {
  802.         return false;
  803.     }
  804.  
  805.     for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
  806.     {
  807.         //Enumerate all sub keys...
  808.         dwBufferSize = sizeof(sAppKeyName);
  809.         if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
  810.             &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
  811.         {
  812.             //Open the sub key.
  813.             wsprintf(sSubKey, L"%s\\%s", sRoot, sAppKeyName);
  814.             if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
  815.             {
  816.                 RegCloseKey(hAppKey);
  817.                 RegCloseKey(hUninstKey);
  818.                 MessageBox(NULL, sSubKey, L"EROOROROOR", 5);
  819.  
  820.                 return false;
  821.             }
  822.  
  823.             //Get the display name value from the application's sub key.
  824.             dwBufferSize = sizeof(sDisplayName);
  825.             if (RegQueryValueEx(hAppKey, L"DisplayName", NULL,
  826.                 &dwType, (unsigned char*)sDisplayName, &dwBufferSize) == ERROR_SUCCESS)
  827.             {
  828.                 wprintf(L"%s\n", sDisplayName);
  829.  
  830.                 std::string test = unicode2ansi(sDisplayName);
  831.  
  832.                 //std::wstring stemp = std::wstring(test.begin(), test.end());
  833.                 //LPCWSTR sw = (LPCWSTR)stemp.c_str();
  834.  
  835.                 size_t pos = findCaseInsensitive(test, name);
  836.  
  837.                 if (pos != std::string::npos) {
  838. #ifdef _DEBUG
  839.                     MessageBox(NULL, sDisplayName, L"RG x64", 1);
  840. #endif     
  841.                     return true;
  842.                 }
  843.  
  844.             }
  845.             else {
  846.                 //Display name value doe not exist, this application was probably uninstalled.
  847.  
  848.             }
  849.  
  850.             RegCloseKey(hAppKey);
  851.         }
  852.     }
  853.  
  854.     RegCloseKey(hUninstKey);
  855.     return false;
  856.  
  857. }
  858.  
  859. bool EnumInstalledSoftwareUser(std::string name)
  860. {
  861.     HKEY hUninstKey = NULL;
  862.     HKEY hAppKey = NULL;
  863.     WCHAR sAppKeyName[1024];
  864.     WCHAR sSubKey[1024];
  865.     WCHAR sDisplayName[1024];
  866.     const wchar_t* sRoot = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  867.  
  868.     long lResult = ERROR_SUCCESS;
  869.     DWORD dwType = KEY_ALL_ACCESS;
  870.     DWORD dwBufferSize = 0;
  871.  
  872.     //Open the "Uninstall" key.
  873.     if (RegOpenKeyEx(HKEY_CURRENT_USER, sRoot, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
  874.     {
  875.         return false;
  876.     }
  877.  
  878.     for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
  879.     {
  880.         //Enumerate all sub keys...
  881.         dwBufferSize = sizeof(sAppKeyName);
  882.         if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
  883.             &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
  884.         {
  885.             //Open the sub key.
  886.             wsprintf(sSubKey, L"%s\\%s", sRoot, sAppKeyName);
  887.             if (RegOpenKeyEx(HKEY_CURRENT_USER, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
  888.             {
  889.                 RegCloseKey(hAppKey);
  890.                 RegCloseKey(hUninstKey);
  891.                 MessageBox(NULL, sSubKey, L"EROOROROOR", 5);
  892.  
  893.                 return false;
  894.             }
  895.  
  896.             //Get the display name value from the application's sub key.
  897.             dwBufferSize = sizeof(sDisplayName);
  898.             if (RegQueryValueEx(hAppKey, L"DisplayName", NULL,
  899.                 &dwType, (unsigned char*)sDisplayName, &dwBufferSize) == ERROR_SUCCESS)
  900.             {
  901.                 wprintf(L"%s\n", sDisplayName);
  902.  
  903.                 std::string test = unicode2ansi(sDisplayName);
  904.  
  905.                 //std::wstring stemp = std::wstring(test.begin(), test.end());
  906.                 //LPCWSTR sw = (LPCWSTR)stemp.c_str();
  907.  
  908.                 size_t pos = findCaseInsensitive(test, name);
  909.  
  910.                 if (pos != std::string::npos) {
  911. #ifdef _DEBUG
  912.                     MessageBox(NULL, sDisplayName, L"RG Curent user x32", 1);
  913. #endif     
  914.                     return true;
  915.                 }
  916.  
  917.             }
  918.             else {
  919.                 //Display name value doe not exist, this application was probably uninstalled.
  920.  
  921.             }
  922.  
  923.             RegCloseKey(hAppKey);
  924.         }
  925.     }
  926.  
  927.     RegCloseKey(hUninstKey);
  928.     return false;
  929.  
  930. }
  931.  
  932. bool EnumInstalledSoftware(std::string name)
  933. {
  934.     HKEY hUninstKey = NULL;
  935.     HKEY hAppKey = NULL;
  936.     WCHAR sAppKeyName[1024];
  937.     WCHAR sSubKey[1024];
  938.     WCHAR sDisplayName[1024];
  939.     const wchar_t* sRoot = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  940.     const wchar_t* sRoot32 = L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
  941.  
  942.     long lResult = ERROR_SUCCESS;
  943.     DWORD dwType = KEY_ALL_ACCESS;
  944.     DWORD dwBufferSize = 0;
  945.  
  946.     //Open the "Uninstall" key.
  947.     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sRoot, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
  948.     {
  949.         return false;
  950.     }
  951.  
  952.     for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
  953.     {
  954.         //Enumerate all sub keys...
  955.         dwBufferSize = sizeof(sAppKeyName);
  956.         if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
  957.             &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
  958.         {
  959.             //Open the sub key.
  960.             wsprintf(sSubKey, L"%s\\%s", sRoot, sAppKeyName);
  961.             if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
  962.             {
  963.                 RegCloseKey(hAppKey);
  964.                 RegCloseKey(hUninstKey);
  965.                 MessageBox(NULL, sSubKey, L"EROOROROOR", 5);
  966.  
  967.                 return false;
  968.             }
  969.  
  970.             //Get the display name value from the application's sub key.
  971.             dwBufferSize = sizeof(sDisplayName);
  972.             if (RegQueryValueEx(hAppKey, L"DisplayName", NULL,
  973.                 &dwType, (unsigned char*)sDisplayName, &dwBufferSize) == ERROR_SUCCESS)
  974.             {
  975.                 wprintf(L"%s\n", sDisplayName);
  976.  
  977.                 std::string test = unicode2ansi(sDisplayName);
  978.  
  979.                 //std::wstring stemp = std::wstring(test.begin(), test.end());
  980.                 //LPCWSTR sw = (LPCWSTR)stemp.c_str();
  981.                
  982.                 size_t pos = findCaseInsensitive(test, name);
  983.  
  984.                 if (pos != std::string::npos){
  985. #ifdef _DEBUG
  986.                     MessageBox(NULL, sDisplayName, L"RG x64", 1);
  987. #endif     
  988.                     return true;
  989.                 }
  990.                                  
  991.             }
  992.             else {
  993.                 //Display name value doe not exist, this application was probably uninstalled.
  994.  
  995.             }
  996.  
  997.             RegCloseKey(hAppKey);
  998.         }
  999.     }
  1000.  
  1001.     RegCloseKey(hUninstKey);
  1002.  
  1003.     hUninstKey = NULL;
  1004.     hAppKey = NULL;
  1005.     sAppKeyName[1024];
  1006.     sSubKey[1024];
  1007.  
  1008.     lResult = ERROR_SUCCESS;
  1009.     dwType = KEY_ALL_ACCESS;
  1010.     dwBufferSize = 0;
  1011.  
  1012.  
  1013.     //Open the "Uninstall" key.
  1014.     if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sRoot32, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
  1015.     {
  1016.         return false;
  1017.     }
  1018.  
  1019.     for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
  1020.     {
  1021.         //Enumerate all sub keys...
  1022.         dwBufferSize = sizeof(sAppKeyName);
  1023.         if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
  1024.             &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
  1025.         {
  1026.             //Open the sub key.
  1027.             wsprintf(sSubKey, L"%s\\%s", sRoot32, sAppKeyName);
  1028.             if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
  1029.             {
  1030.                 RegCloseKey(hAppKey);
  1031.                 RegCloseKey(hUninstKey);
  1032.                 MessageBox(NULL, sSubKey, L"EROOROROOR", 5);
  1033.  
  1034.                 return false;
  1035.             }
  1036.  
  1037.             //Get the display name value from the application's sub key.
  1038.             dwBufferSize = sizeof(sDisplayName);
  1039.             if (RegQueryValueEx(hAppKey, L"DisplayName", NULL,
  1040.                 &dwType, (unsigned char*)sDisplayName, &dwBufferSize) == ERROR_SUCCESS)
  1041.             {
  1042.                 wprintf(L"%s\n", sDisplayName);
  1043.  
  1044.                 std::string test = unicode2ansi(sDisplayName);
  1045.  
  1046.                 //std::wstring stemp = std::wstring(test.begin(), test.end());
  1047.                 //LPCWSTR sw = (LPCWSTR)stemp.c_str();
  1048.                 //MessageBox(NULL, sw, L"KKAAA", 1);
  1049.  
  1050.                 size_t pos = findCaseInsensitive(test, name);
  1051.  
  1052.                 if (pos != std::string::npos) {
  1053. #ifdef _DEBUG
  1054.                     MessageBox(NULL, sDisplayName, L"RG x32", 1);
  1055. #endif 
  1056.                     return true;
  1057.                 }
  1058.            
  1059.  
  1060.             }
  1061.             else {
  1062.                 //Display name value doe not exist, this application was probably uninstalled.
  1063.  
  1064.             }
  1065.  
  1066.             RegCloseKey(hAppKey);
  1067.         }
  1068.     }
  1069.  
  1070.     RegCloseKey(hUninstKey);
  1071.    
  1072.  
  1073.  
  1074.     hUninstKey = NULL;
  1075.     hAppKey = NULL;
  1076.     sAppKeyName[1024];
  1077.     sSubKey[1024];
  1078.  
  1079.     lResult = ERROR_SUCCESS;
  1080.     dwType = KEY_ALL_ACCESS;
  1081.     dwBufferSize = 0;
  1082.  
  1083.  
  1084.     //Open the "Uninstall" key.
  1085.     if (RegOpenKeyEx(HKEY_CURRENT_USER, sRoot, 0, KEY_READ, &hUninstKey) != ERROR_SUCCESS)
  1086.     {
  1087.         return false;
  1088.     }
  1089.  
  1090.     for (DWORD dwIndex = 0; lResult == ERROR_SUCCESS; dwIndex++)
  1091.     {
  1092.         //Enumerate all sub keys...
  1093.         dwBufferSize = sizeof(sAppKeyName);
  1094.         if ((lResult = RegEnumKeyEx(hUninstKey, dwIndex, sAppKeyName,
  1095.             &dwBufferSize, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS)
  1096.         {
  1097.             //Open the sub key.
  1098.             wsprintf(sSubKey, L"%s\\%s", sRoot, sAppKeyName);
  1099.             if (RegOpenKeyEx(HKEY_CURRENT_USER, sSubKey, 0, KEY_READ, &hAppKey) != ERROR_SUCCESS)
  1100.             {
  1101.                 RegCloseKey(hAppKey);
  1102.                 RegCloseKey(hUninstKey);
  1103.                 MessageBox(NULL, sSubKey, L"EROOROROOR", 5);
  1104.  
  1105.                 return false;
  1106.             }
  1107.  
  1108.             //Get the display name value from the application's sub key.
  1109.             dwBufferSize = sizeof(sDisplayName);
  1110.             if (RegQueryValueEx(hAppKey, L"DisplayName", NULL,
  1111.                 &dwType, (unsigned char*)sDisplayName, &dwBufferSize) == ERROR_SUCCESS)
  1112.             {
  1113.                 wprintf(L"%s\n", sDisplayName);
  1114.  
  1115.                 std::string test = unicode2ansi(sDisplayName);
  1116.  
  1117.                 //std::wstring stemp = std::wstring(test.begin(), test.end());
  1118.                 //LPCWSTR sw = (LPCWSTR)stemp.c_str();
  1119.                 //MessageBox(NULL, sw, L"KKAAA", 1);
  1120.  
  1121.                 size_t pos = findCaseInsensitive(test, name);
  1122.  
  1123.                 if (pos != std::string::npos) {
  1124. #ifdef _DEBUG
  1125.                     MessageBox(NULL, sDisplayName, L"RG current user x32", 1);
  1126. #endif
  1127.                     return true;
  1128.                 }
  1129.  
  1130.  
  1131.             }
  1132.             else {
  1133.                 //Display name value doe not exist, this application was probably uninstalled.
  1134.  
  1135.             }
  1136.  
  1137.             RegCloseKey(hAppKey);
  1138.         }
  1139.     }
  1140.  
  1141.     RegCloseKey(hUninstKey);
  1142.  
  1143.     return false;
  1144. }
  1145.  
  1146. void createButtonRefresh(HWND hWnd) {
  1147.     if (buttonRefresh == NULL || true) {
  1148.         buttonRefresh = CreateWindow(TEXT("BUTTON"), L"REFRESH", WS_CHILD | WS_VISIBLE | WS_BORDER, 470, 50, 100, 20, hWnd, (HMENU)BP_REFRESH, NULL, NULL);
  1149.         SendMessage(buttonRefresh, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), true);
  1150.     }
  1151.  
  1152. }
  1153.  
  1154. void createButtonInstallFirst(HWND hWnd) {
  1155.    
  1156.         ButtonInstallFirst = CreateWindow(TEXT("BUTTON"), L"VALIDATION", WS_CHILD | WS_VISIBLE | WS_BORDER, 610, 50, 100, 20, hWnd, (HMENU)BP_VALIDATION, NULL, NULL);
  1157.         SendMessage(ButtonInstallFirst, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), true);
  1158.    
  1159. }
  1160.  
  1161. void createTextBox(HWND hWnd) {
  1162.  
  1163.     TCHAR pwd[MAX_PATH]; GetCurrentDirectory(MAX_PATH, pwd);
  1164.     _tcscat(pwd, L"\\DATA\\");
  1165.     textbox = CreateWindow(TEXT("Edit"), pwd, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 40, 50, 400, 20, hWnd, NULL, NULL, NULL);
  1166.     SendMessage(textbox, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), true);
  1167.    
  1168. }
  1169.  
  1170. void createListViewOk(HWND hWnd) {
  1171.  
  1172.         InitCommonControls();
  1173.  
  1174.         LONG bottom = rcClient.bottom;
  1175.         LONG left = rcClient.left;
  1176.         LONG right = rcClient.right;
  1177.         LONG top = rcClient.top;
  1178.  
  1179.         g_listViewOk = CreateWindow(WC_LISTVIEW, L"", WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT | WS_HSCROLL | WS_VSCROLL,
  1180.             right - 450,
  1181.             top + 100,
  1182.             200,
  1183.             bottom - 120,
  1184.             hWnd,
  1185.             NULL, hInst, NULL);
  1186.  
  1187.         ListView_SetExtendedListViewStyle(g_listViewOk, LVS_EX_FULLROWSELECT );
  1188.  
  1189.         LVCOLUMN lvCol;
  1190.  
  1191.         lvCol.mask = LVCF_TEXT | LVCF_WIDTH ;
  1192.    
  1193.         TCHAR Text[32];
  1194.         _tcscpy(Text, _T("Install"));
  1195.         lvCol.cx = 200;
  1196.         lvCol.pszText = Text;
  1197.         ListView_InsertColumn(g_listViewOk, 0, &lvCol);
  1198.         COLORREF color;
  1199.         color = RGB(0, 255, 0);
  1200.         ListView_SetTextColor(g_listViewOk, color);
  1201.    
  1202. }
  1203.  
  1204. void createListViewN(HWND hWnd) {
  1205.  
  1206.         InitCommonControls();
  1207.  
  1208.         LONG bottom = rcClient.bottom;
  1209.         LONG left = rcClient.left;
  1210.         LONG right = rcClient.right;
  1211.         LONG top = rcClient.top;
  1212.  
  1213.         g_listViewNo = CreateWindow(WC_LISTVIEW, L"", WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT | WS_HSCROLL | WS_VSCROLL,
  1214.             right - 230,
  1215.             top + 100,
  1216.             200,
  1217.             bottom - 120,
  1218.             hWnd,
  1219.             NULL, hInst, NULL);
  1220.  
  1221.         ListView_SetExtendedListViewStyle(g_listViewNo, LVS_EX_FULLROWSELECT);
  1222.  
  1223.         LVCOLUMN lvCol;
  1224.  
  1225.         lvCol.mask = LVCF_TEXT | LVCF_WIDTH ;
  1226.    
  1227.  
  1228.         TCHAR Text[32];
  1229.         _tcscpy(Text, _T("Non Install"));
  1230.         lvCol.cx = 200;
  1231.         lvCol.pszText = Text;
  1232.         ListView_InsertColumn(g_listViewNo, 0, &lvCol);
  1233.         COLORREF color;
  1234.         color = RGB(255, 0, 0);
  1235.         ListView_SetTextColor(g_listViewNo, color);
  1236.    
  1237. }
  1238.  
  1239. void createTextBoxParam(HWND hWnd) {
  1240.  
  1241.     TCHAR pwd[MAX_PATH] = L"";
  1242.     _tcscat(pwd, L" /S /VERYSILENT /SUPRESSMSGBOXES /NORESTART /ALLUSERS ");
  1243.     textboxParam = CreateWindow(TEXT("Edit"), pwd, WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 730, 50, 400, 20, hWnd, NULL, NULL, NULL);
  1244.     SendMessage(textboxParam, WM_SETFONT, (LPARAM)GetStockObject(DEFAULT_GUI_FONT), true);
  1245.    
  1246. }
  1247.  
  1248. void createProgressBar(HWND hWnd) {
  1249.  
  1250.    
  1251.     progressBar = CreateWindowEx(0, PROGRESS_CLASS, (LPTSTR)NULL,
  1252.         WS_CHILD | WS_VISIBLE | PBS_SMOOTH, 0,
  1253.         0,
  1254.         rcClient.right, 20,
  1255.         hWnd, (HMENU)0, hInst, NULL);
  1256.     //SendMessage(progressBar, PBM_SETRANGE, 0, MAKELPARAM(0, 100));
  1257.  
  1258.     //COLORREF color;
  1259.     //color = RGB(0, 128, 0);
  1260.  
  1261.     //SendMessage(progressBar, PBM_SETPOS, 99, 0);
  1262.     //SendMessage(tt, PBM_SETBARCOLOR, 0,color);
  1263.    
  1264. }
  1265.  
  1266. BOOL IsElevated() {
  1267.     BOOL fRet = FALSE;
  1268.     HANDLE hToken = NULL;
  1269.     if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken)) {
  1270.         TOKEN_ELEVATION Elevation;
  1271.         DWORD cbSize = sizeof(TOKEN_ELEVATION);
  1272.         if (GetTokenInformation(hToken, TokenElevation, &Elevation, sizeof(Elevation), &cbSize)) {
  1273.             fRet = Elevation.TokenIsElevated;
  1274.         }
  1275.     }
  1276.     if (hToken) {
  1277.         CloseHandle(hToken);
  1278.     }
  1279.     return fRet;
  1280. }
  1281.  
  1282. std::string utf8_encode(const std::wstring& wstr)
  1283. {
  1284.     int size_needed = WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), NULL, 0, NULL, NULL);
  1285.     std::string strTo(size_needed, 0);
  1286.     WideCharToMultiByte(CP_UTF8, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL);
  1287.     return strTo;
  1288. }
  1289.  
  1290. std::wstring utf8_decode(const std::string& str)
  1291. {
  1292.     int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
  1293.     std::wstring wstrTo(size_needed, 0);
  1294.     MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
  1295.     return wstrTo;
  1296. }
  1297.  
  1298. std::string unicode2ansi(const std::wstring& wstr)
  1299. {
  1300.     int size_needed = WideCharToMultiByte(CP_ACP, 0, &wstr[0], -1, NULL, 0, NULL, NULL);
  1301.     std::string strTo(size_needed, 0);
  1302.     WideCharToMultiByte(CP_ACP, 0, &wstr[0], (int)wstr.size(), &strTo[0], size_needed, NULL, NULL);
  1303.     return strTo;
  1304. }
  1305.  
  1306. std::wstring ansi2unicode(const std::string& str)
  1307. {
  1308.     int size_needed = MultiByteToWideChar(CP_ACP, 0, &str[0], (int)str.size(), NULL, 0);
  1309.     std::wstring wstrTo(size_needed, 0);
  1310.     MultiByteToWideChar(CP_ACP, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
  1311.     return wstrTo;
  1312. }
  1313.  
  1314. std::wstring ReplaceWCSWithPattern(__in const std::wstring& message, __in const std::wstring& pattern, __in const std::wstring& replace)
  1315. {
  1316.     std::wstring result = message;
  1317.     std::wstring::size_type pos = 0;
  1318.     std::wstring::size_type offset = 0;
  1319.  
  1320.     while ((pos = result.find(pattern, offset)) != std::wstring::npos)
  1321.     {
  1322.         result.replace(result.begin() + pos, result.begin() + pos + pattern.size(), replace);
  1323.         offset = pos + replace.size();
  1324.     }
  1325.  
  1326.     return result;
  1327. }
  1328.  
  1329. HICON ImageList(wstring url, wstring exec) {
  1330.     SHFILEINFO sfi;
  1331.     HICON hiconItem;     // Icon for list-view items.
  1332.  
  1333.     SecureZeroMemory(&sfi, sizeof sfi);
  1334.  
  1335.     wstring tt = url + exec;
  1336.     const wchar_t* wcharPath = tt.c_str();
  1337.  
  1338.     SHGetFileInfo(
  1339.         wcharPath,
  1340.         FILE_ATTRIBUTE_DIRECTORY,
  1341.         &sfi, sizeof sfi,
  1342.         SHGFI_ICON);
  1343.  
  1344.     hiconItem = sfi.hIcon;
  1345.  
  1346.     return hiconItem;
  1347.  
  1348. }
  1349.  
  1350. void testestset(HDC hdc) {
  1351.  
  1352.     SHFILEINFO sfi;
  1353.     HICON hiconItem;     // Icon for list-view items.
  1354.     HIMAGELIST hSmall;   // Image list for other views.
  1355.     hSmall = ImageList_Create(16,
  1356.         16,
  1357.         ILC_COLOR32, 1, 1);
  1358.  
  1359.     SecureZeroMemory(&sfi, sizeof sfi);
  1360.  
  1361.     SHGetFileInfo(
  1362.         _T("C:\\Users\\loicm\\source\\repos\\Install\\DATA\\Git-2.21.0-64-bit.exe"),
  1363.         FILE_ATTRIBUTE_DIRECTORY,
  1364.         &sfi, sizeof sfi,
  1365.         SHGFI_ICON);
  1366.    
  1367.     hiconItem = sfi.hIcon;
  1368.  
  1369.     ImageList_AddIcon(hSmall, hiconItem);
  1370.    
  1371.  
  1372.     SHGetFileInfo(
  1373.         _T("C:\\Users\\loicm\\source\\repos\\Install\\DATA\\DiscordSetup.exe"),
  1374.         FILE_ATTRIBUTE_DIRECTORY,
  1375.         &sfi, sizeof sfi,
  1376.         SHGFI_ICON);
  1377.     hiconItem = sfi.hIcon;
  1378.  
  1379.     ImageList_AddIcon(hSmall, hiconItem);
  1380.  
  1381.  
  1382.  
  1383.     DrawIconEx(hdc, 20,20, hiconItem, 32, 32, 0, NULL, DI_NORMAL);
  1384.  
  1385.     ListView_SetImageList(g_listView, hSmall, LVSIL_SMALL);
  1386.     DestroyIcon(hiconItem);
  1387.  
  1388.     LVITEM lvItem;
  1389.  
  1390.     lvItem.mask = LVIF_TEXT | LVIF_IMAGE;  
  1391.     lvItem.iItem = 0;
  1392.     lvItem.iSubItem = 0;
  1393.     TCHAR Text[70];
  1394.  
  1395.     _tcscpy(Text, L" ");
  1396.     lvItem.pszText = Text;
  1397.  
  1398.     lvItem.iImage = 1;
  1399.     ListView_InsertItem(g_listView, &lvItem);
  1400.     MessageBox(NULL, sfi.szDisplayName, L"VAVA", 1);
  1401.  
  1402.     /*DWORD_PTR hr;
  1403.     HICON siFolderIcon_Small;
  1404.     SHFILEINFOW sfi = { 0 };
  1405.     hr = SHGetFileInfo(L"Shell32.dll", 0, &sfi, sizeof(sfi), SHGFI_ICON | SHGFI_SMALLICON | SHGFI_USEFILEATTRIBUTES);
  1406.  
  1407.     HIMAGELIST hil_Folders;
  1408.     HICON    hbm_Folders;
  1409.  
  1410.     hil_Folders = ImageList_Create(16, 16, ILC_COLOR, 2, 0);
  1411.     hbm_Folders = (HICON)LoadImage((HINSTANCE)NULL, sfi.szDisplayName, IMAGE_BITMAP, 0, 0, 0);
  1412.  
  1413.  
  1414.     //ImageList_Add(hil_Folders, hbm_Folders, NULL);
  1415.     */
  1416.  
  1417. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top