begin process at 2012 02 12 14:42:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GESTION (SIMPLE) DES COOKIES (WIN32)

GESTION (SIMPLE) DES COOKIES (WIN32)


 Information sur la source

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :09/07/2003 Date de mise à jour :09/07/2003 20:06:19 Vu / téléchargé :2 837 / 133

Auteur : aardman

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note


 Description

Un petit programme pour supprimer ses cookies.
On peut choisir quels cookie ne pas supprimer.
Au prochain lancement, le prog se souvient des cookies non effacés.
c'est tout.

Attention: ecriture d'une key dans "HKEY_CURRENT_USER\SOFTWARE\GestionDesCookies"
Si vous testez le prog, pensez a la supprimer apres.


Source

  • #include <windows.h>
  • #include "resource.h"
  • HWND hList1;
  • HWND hList2;
  • HWND hButtonToRight;
  • HWND hButtonToLeft;
  • char szCookieDirectory[256];
  • int iIndex, iCount;
  • BOOL CALLBACK AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  • int LoadCookies(HWND hList1, HWND hList2); // charge les noms des cookies aux bons endroits
  • int DeleteCookies(void);
  • int TransferIndex(int iIndex, HWND hListFrom, HWND hListTo); // passe une ligne d'une listbox a une autre
  • int GetCookieDirectory(char * szCookiePath);
  • int UpdateRegistry(void); // sauvegarde
  • BOOL CALLBACK AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
  • {
  • switch(uMsg)
  • {
  • case WM_INITDIALOG:
  • hList1 = GetDlgItem(hDlg, IDC_LIST1);
  • hList2 = GetDlgItem(hDlg, IDC_LIST2);
  • hButtonToRight = GetDlgItem(hDlg, IDC_TO_RIGHT);
  • hButtonToLeft = GetDlgItem(hDlg, IDC_TO_LEFT);
  • SendMessage(hList1, LB_RESETCONTENT, 0, 0);
  • SendMessage(hList2, LB_RESETCONTENT, 0, 0);
  • LoadCookies(hList1, hList2);
  • return 1;
  • case WM_COMMAND:
  • switch(LOWORD(wParam))
  • {
  • case IDC_LIST1: // ListBox des cookies a effacer (gauche)
  • switch(HIWORD(wParam))
  • {
  • case LBN_DBLCLK:
  • TransferIndex(SendMessage(hList1, LB_GETCURSEL, 0, 0), hList1, hList2);
  • return 0;
  • case LBN_SETFOCUS:
  • EnableWindow(hButtonToLeft, FALSE);
  • EnableWindow(hButtonToRight, TRUE);
  • return 0;
  • }
  • return 0;
  • case IDC_LIST2: // ListBox des cookie a sauvegarder (droite)
  • switch(HIWORD(wParam))
  • {
  • case LBN_DBLCLK:
  • TransferIndex(SendMessage(hList2, LB_GETCURSEL, 0, 0), hList2, hList1);
  • return 0;
  • case LBN_SETFOCUS:
  • EnableWindow(hButtonToRight, FALSE);
  • EnableWindow(hButtonToLeft, TRUE);
  • return 0;
  • }
  • return 0;
  • case IDC_TO_RIGHT: // button List1 => List2
  • switch(HIWORD(wParam))
  • {
  • case BN_CLICKED:
  • TransferIndex(SendMessage(hList1, LB_GETCURSEL, 0, 0), hList1, hList2);
  • return 0;
  • }
  • return 0;
  • case IDC_TO_LEFT: // button List1 <= List2
  • switch(HIWORD(wParam))
  • {
  • case BN_CLICKED:
  • TransferIndex(SendMessage(hList2, LB_GETCURSEL, 0, 0), hList2, hList1);
  • return 0;
  • }
  • return 0;
  • case IDC_SUPPR:
  • if(HIWORD(wParam)==BN_CLICKED && SendMessage(hList1, LB_GETCOUNT, 0, 0)){
  • if(IDYES==MessageBox(0, "Etes vous sur de vouloir supprimer les cookies contenus dans la colone de gauche ?","Cookies", MB_YESNO))
  • DeleteCookies();}
  • return 0;
  • case IDC_QUITTER:
  • case IDCANCEL:
  • if(SendMessage(GetDlgItem(hDlg, IDC_CHECK), BM_GETCHECK, 0, 0))
  • UpdateRegistry();
  • EndDialog(hDlg, 0);
  • }
  • }
  • return 0;
  • }
  • int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
  • {
  • GetCookieDirectory(szCookieDirectory);
  • DialogBox(hInstance, "MainDialog", 0, AppDlgProc);
  • return 0;
  • }
  • int LoadCookies(HWND hList1, HWND hList2)
  • {
  • HKEY hKeyRead;
  • HANDLE hFile;
  • WIN32_FIND_DATA FileInfo;
  • int i = 0; // index, nombre de cookie lus dans la base de registre
  • char szValueName[256];
  • char szCookieName[256];
  • char szSearchPath[256];
  • DWORD dwValueNameLen = 256;
  • DWORD dwCookieNameLen = 256;
  • // on charge les cookie de la base de registre vers la ListBox de droite
  • RegOpenKeyEx(HKEY_CURRENT_USER,"SOFTWARE\\GestionDesCookies", 0, KEY_ALL_ACCESS, &hKeyRead);
  • if(hKeyRead)
  • while(RegEnumValue(hKeyRead, i, szValueName, &dwValueNameLen, NULL, NULL,
  • (unsigned char *) szCookieName, &dwCookieNameLen)!=ERROR_NO_MORE_ITEMS){
  • SendMessage(hList2, LB_ADDSTRING, 0, (WPARAM) szCookieName);
  • dwValueNameLen = 256;
  • dwCookieNameLen = 256;
  • i++;}
  • // puis les cookies du rep de l'utilisateur (sauf seux qui sont deja dans la list box de droite)
  • strcpy(szSearchPath, szCookieDirectory);
  • strcat(szSearchPath, "*.txt");
  • hFile = FindFirstFile(szSearchPath, &FileInfo);
  • if(hFile == INVALID_HANDLE_VALUE) return 0;
  • do
  • {
  • // boucle avec j pour verifier que le cookie n'est pas deja dans la listbox de droite
  • for(int j = 0; j <= i; j++){
  • SendMessage(hList2, LB_GETTEXT, j, (WPARAM) szCookieName);
  • if(strcmp(szCookieName, FileInfo.cFileName)==0) break;
  • if(j==i) SendMessage(hList1, LB_ADDSTRING, 0, (WPARAM) FileInfo.cFileName);}
  • }while(FindNextFile(hFile, &FileInfo));
  • FindClose(hFile);
  • RegCloseKey(hKeyRead);
  • return 0;
  • }
  • int DeleteCookies(void)
  • {
  • char szCookiePath[256];
  • char szCookieName[256];
  • iCount = SendMessage(hList1, LB_GETCOUNT, 0, 0);
  • for(int i = 0; i < iCount; i++){
  • strcpy(szCookiePath, szCookieDirectory);
  • SendMessage(hList1, LB_GETTEXT, i, (LPARAM) szCookieName);
  • strcat(szCookiePath, szCookieName);
  • DeleteFile(szCookiePath);}
  • SendMessage(hList1, LB_RESETCONTENT, 0, 0);
  • return 0;
  • }
  • int TransferIndex(int iIndex, HWND hListFrom, HWND hListTo)
  • {
  • char szBuffer[256];
  • iCount = SendMessage(hListFrom, LB_GETCOUNT, 0, 0);
  • if(!iCount || iIndex<0) return 0;
  • SendMessage(hListFrom, LB_GETTEXT, iIndex, (LPARAM)szBuffer);
  • SendMessage(hListTo, LB_ADDSTRING, 0, (LPARAM)szBuffer);
  • SendMessage(hListFrom, LB_DELETESTRING, iIndex, 0);
  • if(iIndex+1 >= iCount) iIndex-=1;
  • if(iIndex>=0) SendMessage(hListFrom, LB_SETCURSEL, iIndex, 0);
  • return 0;
  • }
  • int GetCookieDirectory(char * szCookiePath)
  • {
  • HKEY hKey;
  • DWORD dwLenth;
  • RegOpenKey(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\", &hKey);
  • RegQueryValueEx(hKey, "Cookies", NULL, NULL, (unsigned char *) szCookiePath, &dwLenth);
  • if(szCookiePath[strlen(szCookiePath)-1]!='\\') strcat(szCookiePath, "\\");
  • RegCloseKey(hKey);
  • return 0;
  • }
  • int UpdateRegistry(void)
  • {
  • HKEY hKeyCookie;
  • int iNewCookie = 0;
  • int iOldCookie = 0;
  • char szIndex[4]; // iNewCookie ou iOldCookie en version char
  • char szBuffer[256];
  • DWORD dwBufLen;
  • iNewCookie = SendMessage(hList2, LB_GETCOUNT, 0, 0);
  • RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\GestionDesCookies", 0, NULL, REG_OPTION_NON_VOLATILE,
  • KEY_ALL_ACCESS, NULL, &hKeyCookie, NULL);
  • // on efface toutes les valeurs
  • while(RegEnumValue(hKeyCookie, iOldCookie++, szBuffer, &dwBufLen, NULL, NULL, NULL, NULL)!=ERROR_NO_MORE_ITEMS);
  • while(1){
  • if(iOldCookie < 0) break;
  • itoa(iOldCookie, szIndex, 10);
  • RegDeleteValue(hKeyCookie, szIndex);
  • iOldCookie--;}
  • // on remplis avec les nouvelles valeurs
  • while(iNewCookie > 0){
  • SendMessage(hList2, LB_GETTEXT, iNewCookie-1, (WPARAM) szBuffer);
  • dwBufLen = strlen(szBuffer)+1;
  • itoa(iNewCookie-1, szIndex, 10);
  • RegSetValueEx(hKeyCookie, szIndex, 0, REG_SZ,(unsigned char *) szBuffer, dwBufLen);
  • iNewCookie--;}
  • RegCloseKey(hKeyCookie);
  • return 0;
  • }
#include <windows.h>
#include "resource.h"

HWND hList1;
HWND hList2;
HWND hButtonToRight;
HWND hButtonToLeft;
char szCookieDirectory[256];
int iIndex, iCount;

BOOL CALLBACK AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
int LoadCookies(HWND hList1, HWND hList2); // charge les noms des cookies aux bons endroits
int DeleteCookies(void);
int TransferIndex(int iIndex, HWND hListFrom, HWND hListTo); // passe une ligne d'une listbox a une autre
int GetCookieDirectory(char * szCookiePath); 
int UpdateRegistry(void); // sauvegarde

BOOL CALLBACK AppDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg) 
 {
   case WM_INITDIALOG:
	   hList1 = GetDlgItem(hDlg, IDC_LIST1);
	   hList2 = GetDlgItem(hDlg, IDC_LIST2);
	   hButtonToRight = GetDlgItem(hDlg, IDC_TO_RIGHT);
	   hButtonToLeft  = GetDlgItem(hDlg, IDC_TO_LEFT);
	   SendMessage(hList1, LB_RESETCONTENT, 0, 0);
	   SendMessage(hList2, LB_RESETCONTENT, 0, 0);
	   LoadCookies(hList1, hList2);
    return 1;
   case WM_COMMAND:
    switch(LOWORD(wParam)) 
      {
	  case IDC_LIST1: // ListBox des cookies a effacer (gauche)
		  switch(HIWORD(wParam))
		  {
		  case LBN_DBLCLK:
			  TransferIndex(SendMessage(hList1, LB_GETCURSEL, 0, 0), hList1, hList2);
			  return 0;
		  case LBN_SETFOCUS:
			  EnableWindow(hButtonToLeft, FALSE);
			  EnableWindow(hButtonToRight, TRUE);
			  return 0;
		  }
	  return 0;
	  case IDC_LIST2: // ListBox des cookie a sauvegarder (droite)
		  switch(HIWORD(wParam))
		  {
		  case LBN_DBLCLK:
			  TransferIndex(SendMessage(hList2, LB_GETCURSEL, 0, 0), hList2, hList1);
			  return 0;
		  case LBN_SETFOCUS:
			  EnableWindow(hButtonToRight, FALSE);
			  EnableWindow(hButtonToLeft, TRUE);
			  return 0;
		  }
	  return 0;
	  case IDC_TO_RIGHT: // button List1 => List2
		  switch(HIWORD(wParam))
		  {
		  case BN_CLICKED:
			  TransferIndex(SendMessage(hList1, LB_GETCURSEL, 0, 0), hList1, hList2);
			  return 0;
		  }
	  return 0;
	  case IDC_TO_LEFT: // button List1 <= List2
		  switch(HIWORD(wParam))
		  {
		  case BN_CLICKED:
			  TransferIndex(SendMessage(hList2, LB_GETCURSEL, 0, 0), hList2, hList1);
			  return 0;
		  }
	  return 0;
		  case IDC_SUPPR:
			  if(HIWORD(wParam)==BN_CLICKED && SendMessage(hList1, LB_GETCOUNT, 0, 0)){
				  if(IDYES==MessageBox(0, "Etes vous sur de vouloir supprimer les cookies contenus dans la colone de gauche ?","Cookies", MB_YESNO))
				  DeleteCookies();}
			  return 0;
	  case IDC_QUITTER:
	  case IDCANCEL:
		  if(SendMessage(GetDlgItem(hDlg, IDC_CHECK), BM_GETCHECK, 0, 0)) 
			  UpdateRegistry();
		  EndDialog(hDlg, 0);
	}
 }
return 0;
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
GetCookieDirectory(szCookieDirectory);
DialogBox(hInstance, "MainDialog", 0, AppDlgProc);
return 0;
}

int LoadCookies(HWND hList1, HWND hList2)
{
	HKEY hKeyRead;
	HANDLE hFile;
	WIN32_FIND_DATA FileInfo;
	int i = 0; // index, nombre de cookie lus dans la base de registre
	char szValueName[256];
	char szCookieName[256];
	char szSearchPath[256];
	DWORD dwValueNameLen = 256;
	DWORD dwCookieNameLen = 256;
	// on charge les cookie de la base de registre vers la ListBox de droite
	RegOpenKeyEx(HKEY_CURRENT_USER,"SOFTWARE\\GestionDesCookies", 0, KEY_ALL_ACCESS, &hKeyRead);
	if(hKeyRead) 
	while(RegEnumValue(hKeyRead, i, szValueName, &dwValueNameLen, NULL, NULL, 
	                   (unsigned char *) szCookieName, &dwCookieNameLen)!=ERROR_NO_MORE_ITEMS){
	SendMessage(hList2, LB_ADDSTRING, 0, (WPARAM) szCookieName);
	dwValueNameLen = 256;
	dwCookieNameLen = 256;
	i++;}
	// puis les cookies du rep de l'utilisateur (sauf seux qui sont deja dans la list box de droite)
	strcpy(szSearchPath, szCookieDirectory);
	strcat(szSearchPath, "*.txt");
	hFile = FindFirstFile(szSearchPath, &FileInfo);
	if(hFile == INVALID_HANDLE_VALUE) return 0;
	do
	{
		// boucle avec j pour verifier que le cookie n'est pas deja dans la listbox de droite
		for(int j = 0; j <= i; j++){  
			SendMessage(hList2, LB_GETTEXT, j, (WPARAM) szCookieName);
			if(strcmp(szCookieName, FileInfo.cFileName)==0) break;
			if(j==i) SendMessage(hList1, LB_ADDSTRING, 0, (WPARAM) FileInfo.cFileName);}
	}while(FindNextFile(hFile, &FileInfo));
FindClose(hFile);
RegCloseKey(hKeyRead);
return 0;
}

int DeleteCookies(void)
{
	char szCookiePath[256];
	char szCookieName[256];
	iCount = SendMessage(hList1, LB_GETCOUNT, 0, 0);
	for(int i = 0; i < iCount; i++){
		strcpy(szCookiePath, szCookieDirectory);
		SendMessage(hList1, LB_GETTEXT, i, (LPARAM) szCookieName);
		strcat(szCookiePath, szCookieName);
		DeleteFile(szCookiePath);}
	SendMessage(hList1, LB_RESETCONTENT, 0, 0);
return 0;
}

int TransferIndex(int iIndex, HWND hListFrom, HWND hListTo)
{
	char szBuffer[256];
	iCount = SendMessage(hListFrom, LB_GETCOUNT, 0, 0);
	if(!iCount || iIndex<0) return 0;
	SendMessage(hListFrom, LB_GETTEXT, iIndex, (LPARAM)szBuffer);
	SendMessage(hListTo, LB_ADDSTRING, 0, (LPARAM)szBuffer);
	SendMessage(hListFrom, LB_DELETESTRING, iIndex, 0);
	if(iIndex+1 >= iCount) iIndex-=1;
	if(iIndex>=0) SendMessage(hListFrom, LB_SETCURSEL, iIndex, 0);
return 0;
}

int GetCookieDirectory(char * szCookiePath)
{
	HKEY hKey;
	DWORD dwLenth;
	RegOpenKey(HKEY_CURRENT_USER,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\", &hKey); 
	RegQueryValueEx(hKey, "Cookies", NULL, NULL, (unsigned char *) szCookiePath, &dwLenth);
	if(szCookiePath[strlen(szCookiePath)-1]!='\\') strcat(szCookiePath, "\\");
RegCloseKey(hKey);
return 0;
}

int UpdateRegistry(void)
{
	HKEY hKeyCookie;
	int iNewCookie = 0;
	int iOldCookie = 0;
	char szIndex[4];  // iNewCookie ou iOldCookie en version char
	char szBuffer[256];
	DWORD dwBufLen;
	iNewCookie = SendMessage(hList2, LB_GETCOUNT, 0, 0);
	RegCreateKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\GestionDesCookies", 0, NULL, REG_OPTION_NON_VOLATILE,
			       KEY_ALL_ACCESS, NULL, &hKeyCookie, NULL);
	// on efface toutes les valeurs
	while(RegEnumValue(hKeyCookie, iOldCookie++, szBuffer, &dwBufLen, NULL, NULL, NULL, NULL)!=ERROR_NO_MORE_ITEMS);
	while(1){
		if(iOldCookie < 0) break;
		itoa(iOldCookie, szIndex, 10);
		RegDeleteValue(hKeyCookie, szIndex);
		iOldCookie--;}
	// on remplis avec les nouvelles valeurs
	while(iNewCookie > 0){
		SendMessage(hList2, LB_GETTEXT, iNewCookie-1, (WPARAM) szBuffer);
		dwBufLen = strlen(szBuffer)+1;
		itoa(iNewCookie-1, szIndex, 10);
		RegSetValueEx(hKeyCookie, szIndex, 0, REG_SZ,(unsigned char *) szBuffer, dwBufLen);
		iNewCookie--;}
RegCloseKey(hKeyCookie);
return 0;
}


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip EDONKEY SEARCHER (SOCKET, WIN32)
Source avec Zip FONCTIONS IMPORTÉES/EXPORTÉES D'UN EXECUTABLE (WIN32)
Source avec Zip TÉLÉCHARGER UN FICHIER (WIN32, SOCKETS)
Source avec Zip DES YEUX (WIN32)
Source avec Zip Source avec une capture DES CHIFFRES ET DES LETTRES (WIN32)

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de aardman le 09/07/2003 20:11:26

J'ai oublier de dire que les commentaires sont les bienvenues.

Commentaire de BruNews le 09/07/2003 20:30:57 administrateur CS

Bon travail, y a pas grand chose a dire de plus.

Commentaire de aardman le 09/07/2003 21:11:56

Merci!

Commentaire de Kirua le 10/07/2003 18:39:28

et ce serait encore mieux si tu en faisais une classe utilisable dans un projet avec interface graphique. histoire d'être facilement implémenté :-)

Commentaire de aardman le 10/07/2003 18:52:10

je vois ce que tu veux dire Kirua, mais les classes et l'orienté objet en general je m'y connais pas assez pour faire ce que tu dis. Dans un petit moment, peut etre, quand j'aurais le niveau :)
Merci pour le commentaire.

Commentaire de Kirua le 10/07/2003 19:39:47

http://glouise.developpez.com/classes.htm
:-) c fou ce que ça facilite la vie, je n'utilise plus que ça. mets-toi y vite !

Commentaire de aardman le 11/07/2003 20:48:33

Merci pour le lien j'irais jetter un coup d'oeil :)

Commentaire de Kwantom le 04/01/2005 20:44:50

Projet intéressent, mais la structure du code laisse à désirer.

Code difficile à déchiffrer

6/10

Commentaire de Kirua le 10/01/2005 17:29:01

"http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/regqueryvalueex.asp"

    RegQueryValueEx(hKey, "Cookies", NULL, NULL, (unsigned char *) szCookiePath, &dwLenth);
    if(szCookiePath[strlen(szCookiePath)-1]!='\\') strcat(szCookiePath, "\\");

tu appelles strlen() sur szCookiePath, mais dwLenth contient déjà la longueur des données copiées, ce serait plus rapide de réutiliser cette variable AMHA.

Commentaire de Alain Proviste le 26/05/2005 00:03:56 administrateur CS

BON TRAVAIL L'AMI :D

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales