Quelqu'un peut-il afficher un extrait de code court et simple? Il devrait prendre le nom d'un .exe comme entrée et produire un fichier .ico. Le plus court sera le mieux, et s'il vous plaît ne recommande pas de binaires. Cela semble être une tâche si simple, mais le seul code que j'ai trouvé semble extrêmement gonflé. Merci!Code simple pour extraire une icône d'un fichier .exe
Répondre
Bien que cela semble simple, comme la plupart des choses dans Win32 en pratique, ce n'est pas trivial. En particulier, tout ce bloc de code se sent vraiment, vraiment vieux ... et c'est une douleur royale de le manipuler. Cela est dû au fait qu'il existe plusieurs tailles d'icônes par fichier, ainsi que plusieurs icônes par taille et par fichier.
Voici un ancien code qui fait beaucoup de ce dont vous avez besoin (mais pas tous). Cela devrait vous bien sur votre chemin par craquage EXEs et vous obtenir les icônes elles-mêmes:
Certains configuration:
static const int _MAX_ICONS = 2;
typedef struct INTERNAL_ICON_INFO
{
HICON hIcon;
int nSize;
} INTERNAL_ICON_INFO;
typedef struct TAG_ICON_BUNDLE_DETAILS
{
int nLargeIcons;
INTERNAL_ICON_INFO aiiLargeIcons[_MAX_ICONS];
int nSmallIcons;
INTERNAL_ICON_INFO aiiSmallIcons[_MAX_ICONS];
} ICON_BUNDLE_DETAILS;
Le code d'extraction d'icônes:
HINSTANCE hTargetModule = LoadLibrary((LPCTSTR)stTargetFile);
if (NULL != hTargetModule)
{
int nIconCount = ExtractIconEx((LPCTSTR)stTargetFile, -1, NULL, NULL, 0); // get total icon count
ICON_BUNDLE_DETAILS* priiArray = new ICON_BUNDLE_DETAILS[nIconCount];
int nExtracted = 0;
for (int i = 0; i < nIconCount; i++)
{
HICON* phiLargeIcons = new HICON[nIconCount];
HICON* phiSmallIcons = new HICON[nIconCount];
nExtracted = ExtractIconEx((LPCTSTR)stTargetFile, i, phiLargeIcons, phiSmallIcons, _MAX_ICONS);
for (int j = 0; j < nExtracted; j++)
{
ICONINFO ii;
GetIconInfo(phiLargeIcons[j], &ii);
priiArray[i].nLargeIcons = nExtracted;
priiArray[i].aiiLargeIcons[j].hIcon = phiLargeIcons[j];
priiArray[i].aiiLargeIcons[j].nSize = sizeof(ICONINFO);
}
for (j = 0; j < nExtracted; j++)
{
priiArray[i].nSmallIcons = nExtracted;
priiArray[i].aiiSmallIcons[j].hIcon = phiSmallIcons[j];
priiArray[i].aiiSmallIcons[j].nSize = sizeof(ICONINFO);
}
}
if (nExtracted > 0)
{
// process extracted icons
}
}
En bref, ce code ouvre un fichier cible, compte le nombre d'icônes qu'il contient, puis saisit des informations concernant chaque instance de chaque ICONINFO. C'est la structure qui vous intéresse, car elle contient les bitmaps elles-mêmes. Passer d'ICONINFO au nouveau fichier .ico n'était pas ce que nous devions faire, donc je ne peux pas m'empêcher de faire ça ... mais est-ce que ça pourrait être difficile? ;-)
Bonne chance!
... et au cas où quelqu'un se poserait des questions: Oui, bien sûr, je ressens l'embarras qui accompagne le code écrit il y a 10 ans! Heureusement, c'est encore utile, même si tout est lpsz'd up ;-) – DarkSquid
+1 Je ne savais pas que ça devait être compliqué (comparé à quelques lignes de code). C'est un bon début pour moi, merci! – Lin
Je trouve ceci:
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
Me.Icon = Icon.ExtractAssociatedIcon(My.Application.Info.DirectoryPath
& "\" & My.Application.Info.AssemblyName & ".exe")
End Sub
- 1. Extraire une icône correcte 16x16 affectée à un fichier?
- 2. Extraction d'une icône/vignette pour un fichier
- 3. Application Winforms console, comment puis-je intégrer une icône dans un fichier exe?
- 4. rechercher l'icône pour .exe
- 5. Création d'un seul fichier exe à partir du code Python
- 6. Démarrer un autre fichier EXE dans le code managé
- 7. Signature d'un fichier Windows EXE
- 8. Est-ce qu'une taille de fichier .exe affecte si son icône est affichée?
- 9. Ajouter une icône à mon application terminée
- 10. Hash d'un fichier .exe
- 11. Comment ajouter une icône à un exécutable compilé mingw-gcc?
- 12. Installation d'un fichier exe -VBSCript
- 13. DB2 Code SQL pour extraire des procédures stockées
- 14. Icône d'intégration dans l'application WPF
- 15. code simple pour gérer JNI exceptions
- 16. Faisant une priorité basse exe
- 17. Icône personnalisée par instance de fichier
- 18. Comment obtenir le nom de fichier .EXE
- 19. Obtention d'une icône à partir d'un fichier local avec JavaScript
- 20. Comment lire et écrire le code machine .exe manuellement?
- 21. Comment faire pour exécuter le fichier d'installation exe seul?
- 22. Comment faire pour exécuter le fichier .exe par mon Webservice?
- 23. Icône de raccourci dans un fichier cab
- 24. Manipuler naviguer d'une icône à une autre icône.
- 25. Extraire le texte du fichier CSV
- 26. y compris un fichier exe à jar
- 27. php pour extraire une chaîne de guillemet
- 28. Comment puis-je définir une icône pour un fichier associent en utilisant WiX?
- 29. Icône d'extraction dans VIsta
- 30. Comment ajouter une icône près de flèche pour JComboBox
Langue/technologie? – Noldorin
N'importe quelle langue. Je cherche juste quelque chose qui fonctionne. :) – Lin