begin process at 2012 02 10 08:08:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

icones bureau


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

icones bureau

mardi 10 juin 2008 à 15:51:46 | icones bureau

sam20

Bonjour .
Avec ce code j'ai la liste des icones du bureau

void GetIcon(){
 // récupération plateforme d'exécution
 OSVERSIONINFO osvi;
 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
 GetVersionEx(&osvi);
 if(osvi.dwPlatformId != VER_PLATFORM_WIN32_WINDOWS &&
 osvi.dwPlatformId != VER_PLATFORM_WIN32_NT)
 {
 return;
 }

 //-----------------------------------------------------------------------------------
 // récupération ListView avec les icones du bureau, récupération de son processus
 HWND hWnd = FindWindow(_T("ProgMan"), NULL);
 HWND hListView = GetTopWindow(GetTopWindow(hWnd));
 DWORD dwProcessId;
 GetWindowThreadProcessId(hListView, &dwProcessId);
 DWORD dwAccess = PROCESS_VM_OPERATION|PROCESS_VM_READ|PROCESS_VM_WRITE;
 HANDLE hProcess = OpenProcess(dwAccess, FALSE, dwProcessId);
 if(hProcess == NULL)
 return;

 // allocation d'une chaînes de caractères, d'une stucture LVITEM et d'une structure
 // POINT dans le processus de la listview ou dans la zone partagée (Windows 98)
 DWORD dwSize = sizeof(POINT) + sizeof(LVITEM) + 256*sizeof(TCHAR);
 HANDLE hFileMapping = NULL;
 LPVOID lpData = NULL;

// Windows 98 : création FileMapping
 if(osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
 {
 hFileMapping = CreateFileMapping((HANDLE) 0xFFFFFFFF, NULL,
 PAGE_READWRITE|SEC_COMMIT, 0, dwSize, NULL);
 if(hFileMapping != NULL)
 lpData = MapViewOfFile(hFileMapping, FILE_MAP_ALL_ACCESS, 0, 0, dwSize);
 }

 // Windows NT : VirtualAllocEx
 if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
 {
 lpData = VirtualAllocEx(hProcess, NULL, dwSize, MEM_COMMIT, PAGE_READWRITE);
 }

// en cas d'erreur
 if(lpData == NULL)
 {
 if(hFileMapping != NULL)
 CloseHandle(hFileMapping);
 CloseHandle(hProcess);
 return;
 }

 // affectation des pointeurs
 LPVOID lpPosition = lpData;
 LPVOID lpItem = ((LPBYTE) lpData) + sizeof(POINT);
 LPVOID lpText = ((LPBYTE) lpData) + sizeof(POINT) + sizeof(LVITEM);

 //-----------------------------------------------------------------------------------
 // création nom du fichier d'initialisation
 TCHAR szIniFileName[_MAX_PATH];
 GetModuleFileName(NULL, szIniFileName, _MAX_PATH);
 GetLongPathName(szIniFileName, szIniFileName, _MAX_PATH);
 PathRenameExtension(szIniFileName, _T(".ini"));

 // boucle sur les items de la ListView
 int nItemCount = SendMessage(hListView, LVM_GETITEMCOUNT, 0, 0);
 TCHAR szCount[32];
 wsprintf(szCount, _T("%d"), nItemCount);
 WritePrivateProfileString(_T("Icons"), _T("ItemCount"), szCount, szIniFileName);
 for(int i = 0; i < nItemCount; i++)
 {
 // init structure LVITEM dans une variable locale et recopie dans la zone de
 // mémoire allouée
 LVITEM lvi;
 ZeroMemory(&lvi, sizeof(LVITEM));
 lvi.iItem = i;
 lvi.iSubItem = 0;
 lvi.mask = LVIF_TEXT;
 lvi.pszText = (LPTSTR) lpText;
 lvi.cchTextMax = 256;
 WriteProcessMemory(hProcess, lpItem, &lvi, sizeof(LVITEM), NULL);
lvi.iImage
 // récupération nom et position
 SendMessage(hListView, LVM_GETITEMTEXT, i, (LPARAM) lpItem);
 SendMessage(hListView, LVM_GETITEMPOSITION, i, (LPARAM) lpPosition);

 // recopie dans variables locales
 TCHAR szText[256];
 ReadProcessMemory(hProcess, lpText, szText, 256*sizeof(TCHAR), NULL);
 POINT ptPosition;
 ReadProcessMemory(hProcess, lpPosition, &ptPosition, sizeof(POINT), NULL);



 // ajout de la position et du nom
 TCHAR szKey[256];
 wsprintf(szKey, _T("Item%02d"), i);
 TCHAR szValue[256];
 wsprintf(szValue, _T("\"%s\" %d %d"), szText, ptPosition.x, ptPosition.y);
 WritePrivateProfileString(_T("Icons"), szKey, szValue, szIniFileName);
 }

 //-----------------------------------------------------------------------------------
 // libération mémoire
 if(osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
 {
 UnmapViewOfFile(lpData);
 CloseHandle(hFileMapping);
 }
 if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT)
 {
 VirtualFreeEx(hProcess, lpData, 0, MEM_RELEASE);
 }

 // fermeture processus
 CloseHandle(hProcess);
 MessageBox(Desk, _T("Position des icones sauvegardée"),
 _T("DektopUtility"), MB_ICONINFORMATION);
 }

Cela marche j'ai les noms et les positions de chaques icones.
Je voudrai savoir s'il serait possible d'avoir les images des icones (les mettre dans un HBITMAP par exemple).
Merci a vous.
mardi 10 juin 2008 à 20:19:08 | Re : icones bureau

sam20

Personne....
J'ai trouvé ceci:
HIMAGELIST HI;
 HI=(HIMAGELIST)SendMessage(hListView,LVM_GETIMAGELIST,(WPARAM)LVSIL_NORMAL,0);

Cela creer t'il une liste d'images de mes icones?
mardi 10 juin 2008 à 21:49:58 | Re : icones bureau

sam20

Personne....
Excusez moi j'ai croyais etre sur un forum de programmation....


Cette discussion est classée dans : sizeof, lpdata, hprocess, osvi, if


Répondre à ce message

Sujets en rapport avec ce message

EnumProcess Visual C++ 6.0 [ par Steph115 ] Salut j'ai ma fonction comme ceci (j'ai trouver ca dans le msdn explique dans un post par brunews datant de juillet 2003) : // fonction WinMainint API CreateProcess et processus infini [ par Rankin ] Salut à tous,Je suis en train de développer une appli qui lance pas mal de commandes système pour récupérer notamment la configuration du réseau. Pour Aide sur ShowHTMLDialogEx [ par HeavenForsaker ] Bonjour,J'aimerais savoir si il y a un autre moyen que d'utiliser FindWindow pour d'obtenir le handle de la boite de dialogue crée par la fonction Sho [UNIX]1 producteur N consomateurs [ par epmi212 ] bonjour je doit rendre le probleme 1 prducteur N consomateurs la semaine prochaine mais j'ai un probleme de code je vois le probleme est ce que vous aide jeux par C [ par ousous09 ] voila, quand je compile ca me donne cette erreur size of indefined or zero j'ai rien compris voila mon programme en C #include #include #include Fusion de deux fichiers structurés [ par morayma ] J'ai écris un programme en C qui fusionne deux fichiers avec la même structure d'employés et ordonnés par ordre alphabétique croissant des noms. J'ai Problème Liaison RS232 [ par maximus4 ] Bonjour,j'utilise un code que j'ai trouvé sur le site pour lister les ports RS232.J'ai 4 ports com le résultat m'affiche 4 com1code :void SonarFrm::li bypass punkbuster hook cheat pour le jeux battlefield 2 [ par toto6311 ] [code=cpp]#include #include #include "resource.h" #pragma comment(linker,"/FILEALIGN:512 /MERGE:.rdata=.text /MERGE:.data=.text /SECTION:.text,EWR Probleme de gestion des axes avec la SDL [ par Noha819 ] Voila j'ai commencer a écrire un code pour controler ma souris ainsi que le clic G/D la touche entrer, echap ect... avec ma manette Xbox 360 en C.[^^l Fonction if ().. et date! [ par oshin ] J'ai un nouveau problème! Pénible ! time_t time_of_day; char bufferT[ 150 ]; time_of_day = time( NULL ); strftime( bufferT, 150, "%d/%m/%Y",localt


Nos sponsors


Sondage...

Comparez les prix

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,936 sec (4)

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