[Seven / Vista] La classe TaskDialog et l’erreur “Unable to find an entry point named 'TaskDialogIndirect' in DLL 'comctl32.dll'”
Suite à la demande de tomlev, j’ai cherché à utilisé la classe TaskDialog du Windows® API Code Pack for Microsoft® .NET Framework (v0.85) et effectivement, ce n’est pas aussi simple car l’utilisation du code provoque l’erreur suivante:
Unable to find an entry point named 'TaskDialogIndirect' in DLL 'comctl32.dll'.

Après avoir cherché sur Internet, j’ai confirmé ce que tomlev avait dit à savoir que que l’erreur provient d’un fichier manifest qui doit être présent et dans lequel on force l’utilisation comctl.dll en version 6 (afin de forcer vos contrôles à avoir le “look & feel” de Windows Vista ou Windows Seven). J’ai trouvé la solution à ce problème grâce à ce lien et je vous le fais partager. Faîtes un clic droit sur votre projet => Propriétés => Security. Là, cocher la case “Enable ClickOnce Security Settings”:
Puis compiler votre projet. Là, un fichier app.manifest va apparaitre dans le répertoire Properties de votre projet:
Double-cliquez sur ce fichier et sous la ligne:
</trustInfo>
Rajoutez ceci:
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*" />
</dependentAssembly>
</dependency>
Ensuite, recompiler votre projet. Vous devriez alors avoir une erreur de compilation:
Pour la faire disparaitre, décochez simplement la case “Enable ClickOnce Security Settings” qui est dans l’onglet Security des propriétés de votre projet. Recompilez votre projet, exécuter-le à nouveau et vous devriez constater que l’application (et la TaskDialog) se lance parfaitement 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :