1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
| #include "X-Tension.h"
#include <string>
#include <fstream>
#include <Windows.h>
using namespace std;
/////////////////////////////////////////////////////////////////////////////
// XT_Init = fonction lancée en premier après le démarrage de l'X-Tension
LONG __stdcall XT_Init(DWORD nVersion, DWORD nFlags, HANDLE hMainWnd, void* lpReserved)
{
XT_RetrieveFunctionPointers();
// messages d'accueil /
XWF_OutputMessage(L"INIT --- INIT --- INIT", 0);
XWF_OutputMessage(L"---------> Bienvenue dans ma première X-Tension!!!", 0);
return 1;
}
///////////////////////////////////////////////////////////////////////////////////////////////
// XT_About = fonction lancée quand on clique sur les trois petits points du menu X-Tensions
LONG __stdcall XT_About(HANDLE hParentWnd, void* lpReserved)
{
XWF_OutputMessage(L"---------> About", 0);
return 0;
}
//////////////////////////////////////////////////////////////////////////////
// XT_Prepare
LONG __stdcall XT_Prepare(HANDLE hVolume, HANDLE hEvidence, DWORD nOpType, void* lpReserved)
{
return 0;
}
//////////////////////////////////////////////////////////////////////////////
// XT_ProcessItem
LONG __stdcall XT_ProcessItem(LONG nItemID, void* lpReserved)
{
XWF_OutputMessage(L"PROCESS ITEM --- PROCESS ITEM --- PROCESS ITEM", 0);
return 0;
}
///////////////////////////////////////////////////////////////////////////////
// XT_ProcessItemEx
LONG __stdcall XT_ProcessItemEx(LONG nItemID, HANDLE hItem, void* lpReserved)
{
XWF_OutputMessage(L"PROCESS ITEM EX --- PROCESS ITEM EX --- PROCESS ITEM EX", 0);
// on ajoute un commentaire à cet objet
XWF_AddComment(nItemID, L"mon_commentaire_cool", 1);
// donne le nom et la taille du fichier traité
wstring str;
auto num = XWF_GetItemSize(nItemID);
str = XWF_GetItemName(nItemID);
str += L" ";
str += to_wstring(num);
str += L" bytes";
XWF_OutputMessage(str.c_str(), 0);
return 0;
}
////////////////////////////////////////////////////////////////////////////////
// XT_PrepareSearch
LONG __stdcall XT_PrepareSearch(struct PrepareSearchInfo* PSInfo, struct CodePages* CPages)
{
XWF_OutputMessage(L"PREPARE SEARCH - PREPARE SEARCH - PREPARE SEARCH", 0);
return 1;
}
///////////////////////////////////////////////////////////////////////////////
// XT_ProcessSearchHit
LONG __stdcall XT_ProcessSearchHit(struct SearchHitInfo* info)
{
return 0;
}
//////////////////////////////////////////////////////////////////////////////
// XT_Finalize
LONG __stdcall XT_Finalize(HANDLE hVolume, HANDLE hEvidence, DWORD nOpType, void* lpReserved)
{
XWF_OutputMessage(L"FINALIZE --- FINALIZE --- FINALYSE", 0);
SearchInfo SInfo;
SearchInfo *SIPtr = &SInfo;
SIPtr->iSize = sizeof(*SIPtr);
SIPtr->hVolume = 0;
//SIPtr->lpSearchTerms = L"[a-zA-Z]+:\/\/\0"; // une expression régulière avec GREP, nFlags=65 (GREP + logical search)
SIPtr->lpSearchTerms = L"tartes\r\nflambee";
SIPtr->nFlags = 1;
SIPtr->nSearchWindow = 0;
CodePages CPages;
CodePages *CPPtr = &CPages;
CPPtr->iSize = sizeof(*CPPtr);
CPPtr->nCodePage1 = 1252;
CPPtr->nCodePage2 = 1200;
CPPtr->nCodePage3 = 65001;
CPPtr->nCodePage4 = 0;
CPPtr->nCodePage5 = 0;
// fonction qui permet une recherche simultanée selon les lpSearchTerms définis
XWF_Search(&SInfo, &CPages);
// a l'issue de la recherche on alimente un fichier txt sur le bureau de l'utilisateur
string const nomFichier{ R"(C:\Users\tux\Desktop\history_search.txt)" };
ofstream monFlux{ nomFichier };
if (monFlux)
{
int taille;
taille = SIPtr->iSize;
wstring str;
str = SIPtr->lpSearchTerms;
XWF_OutputMessage(str.c_str(), 0);
XWF_OutputMessage(L"mon fichier est ouvert", 0);
monFlux << "Historique de recherche : " << endl;
monFlux << taille << endl;
}
else
{
XWF_OutputMessage(L"erreur ouverture fichier", 0);
}
return 0;
}
///////////////////////////////////////////////////////////////////////////////
// XT_Done
LONG __stdcall XT_Done(void* lpReserved)
{
XWF_OutputMessage(L"DONE --- DONE --- DONE", 0);
XWF_OutputMessage(L"------------------------------------------------------------------------------------", 0);
return 0;
} |
Partager