begin process at 2012 02 14 13:28:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

API

 > 

Utilisation de l'API SHSelectIcon


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

Utilisation de l'API SHSelectIcon

mercredi 6 avril 2005 à 21:55:17 | Utilisation de l'API SHSelectIcon

etiennexxx9

Bonjour,

Je cherche a savoir comment utiliser l'API SHSelectIcon.
J'ai trouvé un petit bout de code, mais il ne marche pas tout à fait.

Cet API sert à sélectionner une icône à partir d'un fichier.
Par défaut, il ouvre le fichier Shell32.dll, et je ne suis pas capable de lui dire d'ouvrir un autre fichier à l'ouverture du dialogue.

Voici le bout de code que j'ai réussi à dénicher sur codeproject.com:

Private Declare Function SHSelectIcon Lib "shell32" Alias _
"#62" (ByVal owner As Long, _
ByVal pszFileName As String, _
pdwBufferSize As Long, _
pdwIndex As Long) As Boolean

'Call from VB
Sub CallSelectIcon()
Dim LibName As String
Dim cbLibName, dwIndex As Long
LibName = "C:\WINDOWS\MORICONS.DLL"
cbLibName = Len(LibName)
dwIndex = 0
Call SHSelectIcon(0, LibName, cbLibName, dwIndex)
If InStr(LibName, vbNullChar) <> 0 Then
LibName = Left$(LibName, Len(LibName) - 1)
End If
MsgBox "Lib: " & LibName & " Index: " & CStr(dwIndex)
End Sub

J'ai chercher un bout de code dans ce genre pendant environ 2 semaines et voila que je ne suis pas capable de l'utiliser de la bonne facon.

Je serais très reconnaissant si quelequ'un pourrait m'aider à trouver comment il fonctionne. A oui, vous remarquerez que cet API n'est pas expliquée sur aucun site  C'est à ce demander comment quelqu'un a réussi à le trouver.

mercredi 6 avril 2005 à 23:57:59 | Re : Utilisation de l'API SHSelectIcon

Gobillot

il s'agit d'API by number c'est à dire très peu documentés voir pas du tout et pas facile à faire marcher.

Const MAX_PATH = 260
Const DI_MASK = &H1
Const DI_IMAGE = &H2
Const DI_NORMAL = &H3
Const DI_COMPAT = &H4
Const DI_DEFAULTSIZE = &H8

Private Declare Function SHChangeIconDialog Lib "shell32" Alias "#62" (ByVal owner As Long, ByVal pszFileName As String, pdwBufferSize As Long, pdwIndex As Long) As Boolean
Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
Private Declare Function DrawIconEx Lib "user32" (ByVal hdc As Long, ByVal xLeft As Long, ByVal yTop As Long, ByVal hIcon As Long, ByVal cxWidth As Long, ByVal cyWidth As Long, ByVal istepIfAniCur As Long, ByVal hbrFlickerFreeDraw As Long, ByVal diFlags As Long) As Long
Private Declare Function DestroyIcon Lib "user32" (ByVal hIcon As Long) As Long

Private Sub Command1_Click()
   Dim sFileName  As String
   Dim IconPath   As String
   Dim nIconIdx   As Long
   Dim hSmallIcon As Long
   Dim hLargeIcon As Long
  
'  sFileName = "%SystemRoot%\system32\MORICONS.dll"
   sFileName = ""     'SHELL32.dll par défaut
   sFileName = sFileName & String$(MAX_PATH - Len(sFileName), 0)
  
  'conversion en Unicode
   sFileName = StrConv(sFileName, vbUnicode)
  
   nIconIdx = 0
 
   If SHChangeIconDialog(Me.hWnd, sFileName, 0, nIconIdx) Then
  
      IconPath = StrConv(sFileName, vbFromUnicode)
      If InStr(IconPath, vbNullChar) Then
         IconPath = Left$(IconPath, InStr(IconPath, vbNullChar) - 1)
         End If

      If ExtractIconEx(IconPath, nIconIdx, hLargeIcon, hSmallIcon, 1) > 0 Then
       
         DrawIconEx Me.hdc, 0, 8, hSmallIcon, 0, 0, 0, 0, DI_NORMAL
         DrawIconEx Me.hdc, 32, 0, hLargeIcon, 0, 0, 0, 0, DI_NORMAL
        
         DestroyIcon hSmallIcon
         DestroyIcon hLargeIcon
        
         End If

      End If

End Sub

Daniel

jeudi 7 avril 2005 à 00:58:25 | Re : Utilisation de l'API SHSelectIcon

Alain Proviste

Administrateur CodeS-SourceS
 y a mieux pour extraire les icones :
sans compter celle que renfield à fait et même dautres...


http://www.vbfrance.com/code.aspx?ID=4404


si tu as besoin d'aide hesite pas.
jeudi 7 avril 2005 à 04:00:51 | Re : Utilisation de l'API SHSelectIcon

etiennexxx9

Alain  Proviste -> Ce n'était pas tout à fait ce que je cherche à faire, mon but était de sélectionner une icone dans un fichier (comme shell32.dll) pour l'afficher en tant qu'icone personnalisée pour un *menu que je suis en train de faire.

Gobillot -> C'est exactement ce que je pensait, et je n'ai pas de livre ni aucune documentation sur les API... C'est ce que j'attendait. MERCI

*menu: Ce que je veut dire par menu est un menu où on peut mettre des raccourcis et pouvoir en personnaliser les icônes.

Etienne


Cette discussion est classée dans : api, bout, libname, shselecticon, dwindex


Répondre à ce message

Sujets en rapport avec ce message

GetEnvironmentVariable [ par Boldor ] Bonjour,Je voudrai recuperer la valeur des variables d'environnement a partir d'un programme VB.Comment utiliser la fonction GetEnvironmentVariable ?Y les API windows [ par Mskine ] Où je peux trouver des informations,definitions, conseils, des fonctions APIMerci d'avance API [ par CyrilB ] Je voudrais pouvoir fermer une fenêtre MS-DOS même si celle-ci est en cours d'execution.Il y a une fonction API qui fait ça mais je ne sais plus laque Proprietes des fichiers ss NT 4.00 \ Utilisation des fonctions API [ par Xavier ] En fouillant dans l'aide des API, j'ai trouve quelques fonctions pouvant resoudre mon probleme.Qui peut me dire comment faire appel aux fonctions :Get API pour icônes [ par Xaviou ] Salut,Je suis à la recherche d'une API pour afficher la boite de dialogue de changement d'icône (boite que l'on peut obtenir, lorsque l'on regarde les API SHGetFileInfo [ par Xaviou ] Salut,quelqu'un saurait-il comment utiliser l'API SHGetFileInfo ? Pour ma part, c'est le bide complet.J'attends vos réponses avec impatience.@+Xaviou Menu avec icone [ par Xaviou ] Salutje recherche l'API pour intégrer des incones dans mes menus. J'ai trouvé une API (ModifyMenu) qui permet de remplacer le caption d'un menu par un Fonctions API [ par Yvan ] Une petite question : les fonctions API fonctionnent-elles de la même façonsur Win 95, Win 98 et Win NT ?Si je prends comme exemple la fonction GetVo Lecteurs disponibles [ par Yvan ] Salut,Je cherche le moyen de connaître les lettres des lecteurs qui se trouvent sur un ordinateur. Ce qui doit se faire avec les API selon moi. Et s


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 : 1,186 sec (3)

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