IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

changer l'ic�ne d'un raccourci...


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Par d�faut changer l'ic�ne d'un raccourci...
    Bonjour!

    Mon application (VC++ 6.0 avec MFC sous WINXP Pro) doit temporairement intervertir 2 executables. L'exe N�1 poss�de un raccourci sur le bureau. Comment faire pour que l'ic�ne du raccourci reprenne l'image de l'ic�ne de l'exe N�2 une fois les 2 exes renomm�s?

    Merci d'avance pour vos r�ponses!

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Euh... Tu veux dire modifier en C/C++ les raccourcis?
    Ou bien simplement mettre � jour le raccourci pour qu'il refl�te l'exe sur lequel il pointe?

    Si c'est le second cas, le probl�me vient du fait que Windows met les icones en cache pour les afficher plus vite. Il y a un outil Microsoft qui permet de vider le cache et recharger toutes les ic�nes (TweakUI pour winXP) mais j'ignore comment il s'y prend...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Par d�faut
    Merci de t'int�resser � mon sujet, je voudrais effectivement mettre � jour l'ic�ne du raccourci, pour qu'il devienne celui de l'exe N�2 �a rajoute juste un petit panneau "sens interdit", pour le visuel...)
    Je viens d'apprendre �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    HWND	hManager = FindWindowEx(0,0,"Progman","Program Manager"), 
    	hShellDLL = FindWindowEx(hManager,0,"SHELLDLL_DefView",NULL),
    	hBureau = FindWindowEx(hShellDLL,NULL,"SysListView32",0); 
     
    	CWnd Bureau;
    	Bureau.Attach(hBureau);
     
    	Bureau.ModifyStyle(LVS_ICON, LVS_SMALLICON);
    	Bureau.Invalidate();
     
    	Bureau.Detach();
    }
    je continue de fouiller, @+

  4. #4
    Membre habitu�
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 11
    Par d�faut
    Pour l'instant j'en suis l�:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    	HWND	hManager = FindWindowEx(0,0,"Progman","Program Manager"), 
    		hShellDLL = FindWindowEx(hManager,0,"SHELLDLL_DefView",NULL); 
     
    	CListView ListViewBureau;
    	ListViewBureau.Attach(FindWindowEx(hShellDLL,NULL,"SysListView32",0));
     
    	if(HICON hIcon = AfxGetApp()->LoadIcon(IDI_ICON_INTERDIT))
    	{
    		CListCtrl& ListCtrlBureau = ListViewBureau.GetListCtrl();
     
    		if(ListCtrlBureau.GetItemCount())
    		{
    			CImageList	*pListeGrandesImages = ListCtrlBureau.GetImageList(LVSIL_NORMAL);
     
    			int	nIndex1 = pListeGrandesImages->GetImageCount();  // nIndex1 == 0 car access violation dans kernel32.dll
     
    			if(nIndex1 > 0)
    			{
    				LVITEM itemIcone;
    				ZeroMemory(&itemIcone, sizeof(LVITEM));
     
    				itemIcone.pszText = new char[261];
    				ZeroMemory(itemIcone.pszText, 261);
     
    				itemIcone.iItem = ListCtrlBureau.GetItemCount() - 1;
     
    				while(itemIcone.iItem--)
    				{
    					itemIcone.mask = LVIF_TEXT;
     
    					if(!ListCtrlBureau.GetItem(&itemIcone))
    					{
    						CString str;
    						str.Format("ListCtrlBureau.GetItem() == false! itemIcone.iItem == (%d)", itemIcone.iItem);
    						afxDump << str;
    						break;
    					}
     
    					afxDump << itemIcone.pszText;
     
    					if(strcmp(itemIcone.pszText, "Oxygene++ Local"))
    						continue;
     
    					itemIcone.mask = LVIF_IMAGE;
    					ListCtrlBureau.GetItem(&itemIcone);
     
    					pListeGrandesImages->Replace(itemIcone.iImage, hIcon);
     
     
    					break;
    				}
     
    				delete [] itemIcone.pszText;
     
    				ListViewBureau.PostMessage(WM_PAINT);
    			}
     
    			else
    				afxDump << "Index == 0!";
    		}
     
    		else
    			afxDump << "ListViewBureau.GetItemCount() == 0!";
    	}
     
    	else
    		afxDump << "hIcon == NULL!";
     
    	ListViewBureau.Detach();
    �a se termine en "First-chance exception in MyProg.exe (KERNEL32.DLL): 0xC0000005: Access Violation."

Discussions similaires

  1. Changer l'ic�ne d'un raccourci IE ?
    Par Zebulon777 dans le forum G�n�ral JavaScript
    R�ponses: 6
    Dernier message: 27/09/2011, 15h15
  2. Changer l'ic�ne d'un composant cr�e
    Par tomkiki dans le forum Composants VCL
    R�ponses: 5
    Dernier message: 28/01/2007, 17h01
  3. Alerte Outlook (Envoie d'un mail) et changer l'ic�ne
    Par Jihnn dans le forum VB 6 et ant�rieur
    R�ponses: 8
    Dernier message: 06/03/2006, 01h44
  4. [JTree] Changer les ic�nes
    Par Spoutnik dans le forum Composants
    R�ponses: 4
    Dernier message: 12/09/2005, 08h54
  5. Changer l'ic�ne d'une fen�tre � partir d'un .res
    Par henderson dans le forum C++Builder
    R�ponses: 8
    Dernier message: 11/03/2003, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo