// à déclarer dans la partie Interface Function PickIconDlgW(OwnerWnd: HWND; lpstrFile: PWideChar; var nMaxFile: LongInt; var lpdwIconIndex: LongInt): LongBool; stdcall; external 'SHELL32.DLL' index 62; Implementation Uses ShellApi; // pour ExtractIconExW // Utilisation : Procedure TfrmMain.btn_ChangeIconeClick(Sender: TObject); Var FileName : array[0..MAX_PATH - 1] of WideChar; Size, Index: LongInt; hLargeIcon, hSmallIcon : HIcon; Begin Size := MAX_PATH; StringToWideChar('%SystemRoot%\system32\Shell32.dll', FileName, MAX_PATH); // ouvre le Dialogue Changer d'Icône If PickIconDlgW(Self.Handle, FileName, Size, Index) Then If (Index <> -1) Then If ExtractIconExW( FileName, Index, hLargeIcon, hSmallIcon, 1) > 0 Then Begin // on change l'icône de la fiche principale Icon.Handle := hSmallIcon; // et on dessine le LargeIcone sur la fiche DrawIcon(Canvas.Handle, 10, 10, hLargeIcon); // Et on libère la mémoire DestroyIcon(hLargeIcon); DestroyIcon(hSmallIcon); End; End;
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.