begin process at 2010 02 10 12:06:39
  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 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,452 sec (3)

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