ExtracIcon : Help

Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004 - 27 sept. 2002 à 00:00
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 27 sept. 2002 à 00:16
Salut,
je voudrais extraire l'icône du programme sélectionné mais ma procedure n'est pas bonne. Pour extraire, j'utilise la fonction ExtractIcon:

function ExtractIconA(hInst: LongInt; lpszExeFileName: String; nIconIndex: LongInt): LongInt; external 'shell32.dll';

procedure TForm_Principale.Extract_Ico(PathFile:String);
var h : LongInt;
begin
h:=ExtractIconA(hInstance, PathFile, 0);
DrawIcon(Form_Principale.Image_Ico.Canvas.Handle,0, 0, h);
end;

Il me dit que mon prog exécutif crée une violation d'adresse. Quelqu'un peut-il m'aider ?
;) Bruto --- Le p'tit belge --- pour vous servir

1 réponse

cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
27 sept. 2002 à 00:16
Une petite remarque pour commencer : ce n'est pas la peine de faire une référence External pour ajouter des fonctions API. Dans ce cas il suffit de mettre ShallApi dans le Uses.

Ensuite j'ai essayé ceci :
procedure TForm1.Button1Click(Sender: TObject);
Var AZT:Array[0..255]Of Char;
h:THandle;
begin
h:=ExtractIcon(HInstance,StrPCopy(AZT,Paramstr(0)),0);
If h>1 Then DrawIcon(Form1.Image1.Canvas.Handle,0, 0, h);
end;
Et ça fonctionne !

Tu confond PChar et String, Aucune fonction API n'accepte le format String ! Il faut toujours les convertir en PChar, comme je l'ai fait ci-dessus.

Cette méthode ne permet d'extraire des icones seulement des fichiers EXE DLL ou ICO.

--- :sleepy) Nono du Moulin :sleepy) ---
0
Rejoignez-nous